首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用initWithNibName传递的参数:

使用initWithNibName传递的参数:
EN

Stack Overflow用户
提问于 2011-06-06 07:30:19
回答 2查看 4.1K关注 0票数 6

在iphone中,我需要将一些值传递给一个新的viewcontroller对象,而它是从另一个viewcontroller类中的方法创建的,因此我可以在(id)initWithNibName:method中初始化这些值,然后在viewdidLoad方法中加载这些值。

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

回答

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

代码语言:javascript
复制
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil set:(Observation *)observation;

在ViewControllor.m文件中,我将

代码语言:javascript
复制
- (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;

}

然后我在另一堂课上这样称呼它

代码语言:javascript
复制
 ObsevationListView *obsevationListView = [[ObservationViewControllor alloc]  
                                          initWithNibName:@"ObservationViewControllor" 
                                          bundle:nil set:observer];
[self.navigationController pushViewController:obsevationListView animated:YES];

效果很好。我很高兴有人能从这里得到帮助

EN

回答 2

Stack Overflow用户

发布于 2011-06-06 07:33:49

您应该在类中创建另一个初始化器,如下所示

代码语言:javascript
复制
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil andParam:(id)aParam {
...
self.param = aParam;
}
票数 8
EN

Stack Overflow用户

发布于 2011-06-06 07:49:51

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

initWithNibName:bundle:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6248944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档