在主笔尖(nib1)中,我有一个按钮,可以使用下面的代码激活另一个笔尖(nib2)。
我当前将值传递给nib2并从nib2获取的方法是在nib1中创建类方法。但是,本练习项目的目标之一是我需要设计nib2,以便能够在以后的另一个项目中重复使用nib2。这意味着nib2不应该了解nib1的类。这样,以后再使用nib2时,就无需修改其代码(调用nib1'class方法。)
我正在考虑在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。
要将数据从笔尖2返回到笔尖1,您应该定义一个委托协议,让笔尖1实现它并将其设置为笔尖2的委托。
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 之间传递参数:建议?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6053111/