2011-09-11 19 views
0

是否可以在init方法上传递参数?我用的UITableViewController类和UINavigatorController工作,当我推新视图白衣:在 - (id)init中设置参数

[self.navigationController pushViewController:[[Class alloc] init] animated:YES]; 

我也想传递一个字符串给控制器,这可能吗?

回答

1

当然,只是定义自己的初始化为您的视图控制器子类:

- (id)initWithStyle:(UITableViewStyle)style andSomeParameter:(NSString *)param 
{ 
    if (self = [super initWithStyle:style]) { 
     myInstanceVariable = [param retain]; 
    } 
    return self; 
} 

(这对于UITableViewController一个子类)。

+0

非常感谢!而对于UIViewController的子类? –

+0

几乎相同,只是你不会在'super'上调用'initWithStyle:',但可能''initWithNibName:bundle:'。 – omz

2

这不仅是可能的,但它是正常的,很共同。事实上,在类中有多个初始化器是很常见的,每个初始化器都有不同的args组合,这样就可以用不同的方式初始化一个类。

当您发现自己为一个类创建多个初始化程序时,应确保遵循使一个初始化程序成为“指定初始化程序”的最佳实践。这里是a link到一篇文章,演示指定初始化的原则。