2011-06-06 10 views
5

iphoneアプリケーションの場合 別のviewcontrollerクラスのメソッドから新しいviewControllerオブジェクトを作成する際に、新しいviewcontrollerオブジェクトに値を渡す必要があるため、その値を(id)initWithNibNameで初期化できます:新しいviewcontrollerのメソッドviewdidLoadメソッドでこれらの値を読み込むことができます。私が知りたいinitWithNibNameで渡すパラメータ:

は、私は私にちょうどinitWithNibNameは余分なパラメータとしてと呼ばれる方法を示すいくつかのコード例を与えるのjava でのオーバーロードコンストラクタのような新しいviewcontrollorオブジェクトのコンストラクタ(initWithNibName)に値(パラメータ)を渡す行う方法ですこれは私が問題を解決するための方法である


回答


...新しく作成されたオブジェクト おかげでそれらを取得する方法「の観測では、オブジェクトのウィットがありますhはViewControllor.hで は私が、私は別のクラスでは、このようにそれを呼び出して

- (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; 

}

を入れViewControllor.mファイルに

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil set:(Observation *)observation; 

を入れて「属性

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

正常に動作します。私は誰もがこの

+0

を非常に非常に素敵な...私は、まさにこの...おかげでトンを望んでいました。 – viral

答えて

7

から助けを得る場合は、あなたのクラスで別の初期化子を作成する必要がうれしい、

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil andParam:(id)aParam { 
... 
self.param = aParam; 
} 
のようなもの
+0

そして、あなたの.h(アップボット)にイニシャライザを宣言するのを忘れないでください。 – Jorge

+0

また、イニシャライザの最初の行は 'self = [self initWithNibName:nibNameOrNil bundle:nibBundleOrNil];です。 – JeroenEijkhof

+0

ありがとう、私はあなたの助けを借りてそれをやった。別の初期化子を作成し、オブジェクトをデータとともに渡し、そのデータをviewDidLoadメソッドのフィールドにロードします –

0

別の解決策は、前か後のどちらかで、そのパラメータのプロパティを持って、それを設定することです次のコードを使用してコール:

initWithNibName:bundle: