1

当我使用loadNibNamed方法加载xib文件时,如何传递一些参数?

[NSBundle loadNibNamed:xibName owner:[NSApplication sharedApplication]];
4

2 回答 2

3

为了在实例化你的类时传递参数,向 loadNibNamed:owner:方法添加一个包装器并将你的参数传递给这个包装器。

这是此的代码片段:

(ClassName *) GetInstanceWithParameter1:(ParameterType *)param1 
                            andParameter2:(ParameterType *)param2 {
     ClassName *instance = [[ClassName alloc] initWithNibNamed:nibName               
                                                        bundle:nibBundle];
     instance -> P1 = param1;
     instance -> P2 = param2;
     return instance;
}

这里 P1 和 P2 是对应于 param1 和 param2 的类级别变量。现在您可以在代码中的任何位置使用它们。

于 2012-07-17T05:45:01.840 回答
0

这是我所做的对我有用的事情的一个例子。

假设您有一个 UIView 的 Xib (Nib) 文件 (MyNibView.xib)。

那个 UIView 有一个与之关联的 Class,叫做 NibView,它有一个 header 和一个 main 文件;NibView.h 和 NibView.h。

如果您不知道如何将类链接到 Nib:

单击您的 Nib > 转到 Identity Inspector > 在 Custom Class > Class 下输入您的 Class。

1)在 NibView.h 中确保您已实例化对象(您想要通过的对象)。对于这个例子,我将使用一个名为 name 的 NSString。

@property NSString *name;

2) 在 NibView.m 中创建一个函数(例如 helloWorld),然后在该函数中对传入的对象执行任何您想要执行的操作。

- (void) helloWorld {
    NSLog(@"hello %@",self.name);
}

3)写那个方法也是 NibView.h

@property NSString *name;

- (void) helloWorld;

4) 在您从中传递数据的类中(例如可能是 ViewController),导入您的视图类

#import "NibView.h"

并编写以下代码:

NSArray *nib =[[NSBundle mainBundle]loadNibNamed:@"MyNibView" owner:self options:nil];
// At this point - (void)awakeFromNib is called
NibView *view = [nib objectAtIndex:0];
view.name = @"Bob";
// Now lets call the method "helloWorld"
[view helloWorld];
// This line sets the MyNibView as the UIView of a ViewController (only relevant for this example).
self.view = view;

希望这可以帮助其他人喜欢它帮助我

于 2016-02-03T10:08:26.130 回答