0

私のセットアップ

メインのストーリーボードでは、さまざまなセクションへのリンクを含むサイドバーにSWRevealViewControllerを使用しています。

各セクションは、 RBStoryboardLinkを使用してメイン ストーリーボードにリンクされた個別のストーリーボードに表示されます。

子ストーリーボードでシーンへのセグエを実行すると、メイン ナビゲーション コントローラーは、宛先シーンのタイトルと戻るボタンを配置してこれを表すことができます。この時点で、すべてがうまく機能します。

スキーマへの近似は次のとおりです。

-SWRevealViewController
 |-> (SWRevealViewControllerSegue) -> sw_front
 |-> (SWRevealViewControllerSegue) -> sw_rear

-(sw_rear)UITableViewController
 |(each row selection)
 |-> SWRevealViewControllerSegue -> (CommonContainer)

-CommonContainer
 |-> Container -> Embed segue for container -> RBStoryboardLink

- RBStoryboardLink
 |->(User defined runtime attributes) "storyboardName" : "target_storyboard"

-SpecfificControllerOfTargetedStoryboard
 -(void)viewDidLoad{
    UIBarButtonItem * button = //...
    self.topViewController.navigationItem.rightBarButtonItem = button;//DOESN'T WORK

私の問題

子ストーリーボードからメイン ナビゲーション バーに rightBarButtonItems を追加できません。

私が試したことはありますが、成功しませんでした

シングルトンを使用してバーボタンを動的に追加する

メインのナビゲーション コントローラーを、異なるストーリーボードの子シーンから渡されたボタンを追加するメソッドを使用してシングルトンにしました。

- (void) addRightButton:(UIBarButtonItem *) button{
    self.topViewController.navigationItem.rightBarButtonItem = button;
}

これは、メニューでルート シーンが呼び出された場合でも、最初にのみ機能します。

メイン ナビゲーションバーを狭くする

最悪の解決策も機能しません。子シーンのトップ ボタンを表示するために、メインのナビゲーション バーの幅を変更できません。

4

1 に答える 1

0

私はこの洗練されていない方法で私の問題を解決しました:

CommonContainer または特定のコンテナーで、必要なナビゲーション アイテムを追加し、目的のストーリーボードの特定の UIViewControllers によって受信されたメッセージを送信する IBAction ターゲットを関連付けます。

-CommonContainer
 |-> Container -> Embed segue for container -> RBStoryboardLink
 |-(void)viewDidLoad{
     UIButton *rightButton = [[UIButton alloc] initWithFrame: CGRectMake(0, 0, 15, 13)];
     [rightButton setBackgroundImage:[UIImage imageNamed:@"mv-white-setting.png"] forState:UIControlStateNormal];
     [rightButton setTitle:@"" forState:UIControlStateNormal];
     [rightButton addTarget:self action:@selector(rightTopBarButtonAction:) forControlEvents:UIControlEventTouchUpInside];
     UIBarButtonItem *rightButtonItem = [[UIBarButtonItem alloc] initWithCustomView:rightButton];
     self.navigationController.topViewController.navigationItem.rightBarButtonItem = rightButtonItem;
 }
 |- (IBAction)rightTopBarButtonAction:(id)sender {
     [[NSNotificationCenter defaultCenter] postNotificationName:@"movements_rightTopBarButtonAction" object:nil];
 }

- RBStoryboardLink
 |->(User defined runtime attributes) "storyboardName" : "target_storyboard"

-SpecfificControllerOfTargetedStoryboard
 |-(void)viewDidLoad{
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(rightButtonAction:) name:@"movements_rightTopBarButtonAction" object:nil];
于 2014-06-24T11:43:24.173 に答える