在主笔尖(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/

10-11 03:27