当我使用loadNibNamed
方法加载xib
文件时,如何传递一些参数?
[NSBundle loadNibNamed:xibName owner:[NSApplication sharedApplication]];
当我使用loadNibNamed
方法加载xib
文件时,如何传递一些参数?
[NSBundle loadNibNamed:xibName owner:[NSApplication sharedApplication]];
为了在实例化你的类时传递参数,向
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 的类级别变量。现在您可以在代码中的任何位置使用它们。
这是我所做的对我有用的事情的一个例子。
假设您有一个 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;
希望这可以帮助其他人喜欢它帮助我