0

iOS 7 で動作し、ストーリーボードを使用するように更新している iOS 6 アプリがあります。プロジェクトをアプリの各画面のモジュールに分割できるように、複数のストーリーボードを使用しようとしています。これまでのところこれでうまくいきましたが、iOS 6 のときと同じように作業を行いながら (ただし、アートワークは更新されています)、さまざまなストーリーボード間を移動する方法を提供する必要があります。

私は既存の iOS 6 アプリで UINavigationController を使用していません。これまでは、UIButton タップ ジェスチャでコードを使用して XIB 間を行き来できたので、使用したくありません。UINavigationController についてこれまでに学んだことから、ナビゲーション ボタンの外観を簡単にカスタマイズすることはできません。

ストーリーボードの名前を属性として渡すことで、異なるストーリーボードhttps://github.com/rob-brown/RBStoryboardLinkにあるビューコントローラー間を移動するこの非常にクリーンな方法を見つけました。

ただし、 UINavigationController が使用されている場合にのみ機能するようです。UINavigationController を使用せずに、「ソース コントローラーが UINavigationController のインスタンスによって管理されている場合にのみ、プッシュ セグエを使用できます」というエラーが表示されます。

上記の RBStoryboardlink のみを使用して、UINavigationController を必要とせずにストーリーボード間を移動する方法はありますか?

4

1 に答える 1

1

Push segues can only be used when the source controller is managed by an instance of UINavigationController

これは、ソースにナビゲーション コントローラー スタックがないときにビュー コントローラーをソースにプッシュしようとしていることを意味します。その場合、インスタンス化されたビュー コントローラーのビューをサブビューとしてソース ビュー コントローラーのビューに追加する必要があります。

 UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
 UIViewController *viewController = [mainStoryboard instantiateInitialViewController];
 [self.view addSubview:viewController.view];

またはモーダルに提示するか、それは純粋に要件に依存します。

 UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
 UIViewController *viewController = [mainStoryboard instantiateInitialViewController];
 tabBarViewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
 [self presentViewController:tabBarViewController animated:NO completion:NULL];
于 2013-10-30T06:52:03.533 に答える