0

コードでどこからでもプッシュできる ViewController を (私の StoryBoard から) 作成したいと思います (この ViewController は長時間使用されるため、StoryBoard に大量のセグエを追加したくありません) ...)。

また、現在の ViewController からプッシュされた ViewController にいくつかの変数を渡す必要があります。それを行うために、私はこのコードを使用しています:

NBItemDetailsViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"ItemDetailsViewController"];
vc.item = self.selectedItem;
[self.navigationController pushViewController:vc animated:YES];

ほとんど機能しますが、プッシュされた ViewController では、viewDidLoad メソッドが 2 回呼び出されます。1 回目はアイテムを取得できますが、2 回目は null です。もちろん、表示されたViewControllerは2番目の呼び出しのもののようで、アイテムを取得できません。

何か案が ?StoryBoard でセグエを使用するより良いオプションはありますか (StoryBoard で ViewController を再利用する方法がないとは信じられません...) ?

PS:私はすでにviewDidAppearを使用しようとしました。

4

1 に答える 1

1

(MyRegularViewController)のサブクラスを作成し、UIViewController(MyRegularViewController.xib) によって .xib を割り当てることができます。

File > New > File > User Interface > Empty

UIViewControlleraを空のxibファイルにドラッグします。MyRegularViewController をその xib に関連付けてから、カスタマイズします。

これで、このように簡単にどこでも使用できます。

MyRegularViewController *regular = [[MyRegularViewController alloc] initWithNibName:@"MyRegularViewController" bundle:nil];
self.navigationController pushViewController:regular animated:YES];

すべての場合にストーリーボードを使用する義務はありません。実際、このような状況でストーリーボードを使用すると、ストーリーボードが台無しになります。これには xib とカスタム クラスを使用するだけです。

于 2013-05-24T23:43:42.010 に答える