2011-09-11 9 views
0

は、initメソッドでargsを渡すことは可能ですか?argsを - (id)initに設定する

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

私もそのコントローラに文字列を渡すことが可能である:私は、私は新しいビューの聖霊降臨祭を押すと、のUITableViewControllerクラスとUINavigatorControllerで働いていますか?

答えて

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の異なる組み合わせを持つクラスで複数のイニシャライザを持つことはよくあり、異なる方法でクラスを初期化できます。

クラスの複数のイニシャライザを作成しているので、1つのイニシャライザを「指定されたイニシャライザ」にするためのベストプラクティスに必ず従ってください。指定されたイニシャライザの原理を示す記事へのa linkです。

関連する問題