2011-09-11 46 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到一篇文章,演示指定初始化的原則。