2009-08-27 12 views
0

上のUIViewController内のオブジェクトのプロパティを移入することはできません。 PlayerObjectにはtrackNameプロパティもあります。私はこのコードで私のメインのUIViewControllerからこののUIViewControllerを呼び出す:SecondaryViewControllerでは、私は2つのプロパティを持つのUIViewControllerを持っているiPhone

SecondaryViewController *nextViewController = [[SecondaryViewController alloc] initWithNibName:@"SecondaryViewController" bundle:nil]; 
NSString *trackName = @"a track"; 
nextViewController.trackName = trackName; 
[self.navigationController pushViewController:nextViewController animated:YES]; 
[nextViewController release]; 

私はplayerObjectのtrackNameを設定するinitwithnibnameメソッドをオーバーライドします。

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 
if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) { 
    playerObject.trackName = trackName; 
} 
playerObject.trackName = trackName; 
return self; 

}

最後に私のplayerObjectがSecondaryViewControllerが必要になりますビューのデータのすべてを持っている:私はこのコードでこれを行います。それは次のようになります。

- (void)awakeFromNib{ 
NSString *s = trackName; 
    //more code relevant to the the view controller 
} 

私がデバッグすると、playerObjectのtrackName文字列はnilになります。私は何か間違っていると思う。どのようにして、この値にメインuiviewコントローラで最初に渡したtrackNameをどのように設定することができますか?

答えて

0

それはあなたがplayerObject変数が設定されていないのViewController、これは可能かもしれないINITINGされたときのように思えますか?

+0

Daniel、secondarywithcontrollerのinitwithnibnameの他に、別のメソッドでtrackNameを設定できますか?もしそうなら、どの方法? – Atma

+0

私はこのt rackNameをどのような目的で使用しているのか分からないかもしれません。 secondaryviewcontrolがロードを行いません – Daniel

+0

カントーあなたがプレイヤオブジェクトを割り当てた後、あなたはそれを設定する必要があります。ビューに関連するすべてのことは、プレイヤーオブジェクトクラスで行われます。 tracknameは無関係です。私は、元のmainviewclassからオブジェクトにプロパティを設定する必要があります。 – Atma

0

あなたはinitWithNibName上書きするときに時々起こることができます:バンドルを:.

代わりにセットアップを行うためのviewDidLoadを使用しています。バンドル:):Appleは、このメソッドはinitWithNibNameでない場合(呼び出される前に必要なすべての設定が実行される保証します。

関連する問題