使用initWithNibName传递的参数:

时间:2011-06-06 07:30:19

标签: iphone parameter-passing

在iphone应用程序中 我需要将一些值传递给一个新的viewcontroller对象,同时它是从另一个viewcontroller类中的方法创建的,所以我可以在(id)initWithNibName:new viewcontroller的方法中初始化那些值然后我可以在viewdidLoad方法中加载这些值。

我想知道的是如何将值(参数)传递给新viewcontrollor的构造函数(initWithNibName)对象,如java中的构造函数重载 给我一些代码示例,只显示initWithNibName如何使用额外参数调用以及如何在新创建的对象中检索它们 感谢...


答案


这就是我解决问题的方法“观察是一个有属性的对象” 在ViewControllor.h中我放了

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil set:(Observation *)observation;
在ViewControllor.m文件中

我把

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil set:(Observation *)observation{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
    // Custom initialization on passed parameter observation object         
    draftObservation = observation;
}
return self;

}

然后我在另一个班级中以这种方式称呼它

 ObsevationListView *obsevationListView = [[ObservationViewControllor alloc]  
                                          initWithNibName:@"ObservationViewControllor" 
                                          bundle:nil set:observer];
[self.navigationController pushViewController:obsevationListView animated:YES];

它工作正常。如果有人从这个

获得帮助,我很高兴

2 个答案:

答案 0 :(得分:8)

您应该在班级中创建另一个初始化程序,例如

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil andParam:(id)aParam {
...
self.param = aParam;
}

答案 1 :(得分:0)

另一个解决方案是为该参数设置一个属性,并在使用以下代码调用之前或之后设置它:

initWithNibName:bundle: