0

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

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

我正在考虑在 nib2 的类中创建类方法。但是,在 nib2 处于活动状态之前,我将如何调用该方法?

我的做法对吗?任何意见?

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

1 回答 1

1

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

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

要将数据从 nib 2 传回 nib 1,您应该定义一个委托协议,让 nib 1 实现它并将其设置为 nib 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];
于 2011-05-19T02:30:42.620 回答