gpt4 book ai didi

objective-c - 在两个 nib 之间传递参数 : suggestion?

转载 作者:行者123 更新时间:2023-12-03 18:01:28 24 4
gpt4 key购买 nike

在我的主 Nib (nib1) 中,我有一个按钮,可以使用下面的代码激活另一个 Nib (nib2)。

我目前将值传递给 nib2 并从 nib2 获取的方法是在 nib1 中创建类方法。但我这个练习项目的目标之一是我需要设计 nib2,以便我能够在以后的另一个项目中重复使用 nib2。这意味着 nib2 不应该知道 nib1 类的任何信息。这样当我以后重新使用 nib2 时,我不需要修改它的代码(调用 nib1 的类方法。)

我正在考虑在 nib2 的类中创建类方法。但那么我如何才能在 nib2 激活之前调用该方法呢?

我的做法对吗?有意见吗?

NSWindowController *iQWController = [[NSWindowController alloc] initWithWindowNibName:@"iQueryWindow"];
[iQWController showWindow:sender];

最佳答案

对于这个例子,我假设您有类定义 nib1.h/nib1.m/nib1.xib 和 nib2.h/nib2.m/nib2.xib

您应该在 nib2 中创建属性,以便将数据导入 nib 2。

要将数据从 Nib 2 传回 Nib 1,您应该定义一个委托(delegate)协议(protocol),让 Nib 1 实现它并将其设置为 Nib 2 的委托(delegate)。

nib2.h 看起来像:

@protocol Nib2Delegate;

@interface Nib2 : UIViewController {
id <Nib2Delegate> delegate;
}

@property (nonatomic, assign) id <Nib2Delegate> delegate;

@end

@protocol Nib2Delegate

- (void)myMethod;

@end

在 Nib1.h 中,您将拥有:

#import "Nib2.h"

@interface Nib1 : UITableViewController <Nib1Delegate> {

}

- (void)myMethod;

@end

在 Nib1.m

Nib2 *nib2 = [[Nib2 alloc] initWithNibName:@"Nib2" bundle:nil];
nib2.delegate = self;

然后您将在 Nib1.m 中实现 myMethod。当你想在 Nib2.m 中调用它时,它看起来像

[delegate myMethod];

关于objective-c - 在两个 nib 之间传递参数 : suggestion?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6053111/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com