5

ナビゲーションアイテム(スクリーンショットの右側のビュー)を使用してモーダルビューを作成し、「戻るボタン」を設定したいと思います。私のアプリはTabBarアプリケーションであり、このビューにタブバーを付けたくありませんが、「push」タイプに似たセグエを使用して前のビュー(スクリーンショットの左側のビュー)をロードしたいと思います。プッシュセグエを作成して、右側のナビゲーションを左側のビューに戻すことしかできません。モーダルビューとして読み込まれると、NavigationBarとTabBarはなくなります。これに対する回避策はありますか?前もって感謝します!

これが私のスクリーンショットです

4

2 に答える 2

12

バーボタンアイテムを使用して、新しいビューにナビゲーションバーを配置するだけです。バーボタンアイテムからViewControllerの.hへのドラッグを制御して、バーボタンアイテムのアクションを作成します。次に、デリゲートとプロトコルの方法を使用して、ボタンが押されたときに最初のコントローラーに通知し、それを使用させることができます。[self dismissModalViewControllerAnimated:YES];

したがって、2番目のビューでは、次のようなメソッドを実行してプロトコルを作成します。

@protocol SecondViewControllerDelegate <NSObject>

-(void) done;

@end

@interface SecondViewController : UIViewController {
    ...
    id delegate;
}

...

@property (nonatomic, assign) id<SecondViewControllerDelegate> delegate;

-(IBAction)done:(id)sender;  //this will be linked to your nav bar button.
@end

次に、ボタンからのアクションでこれを呼び出します。

-(IBAction)done:(id)sender{
   [self.delegate done];
}

最初のViewControllerはプロトコルを実装する必要があります<SecondViewControllerDelegate>

次に、最初のView Controllerで、セグエする前に2番目のViewControllerのデリゲートとして設定します。

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if([[segue identifier] isEqualToString:@"Second View Modal Segue Identifier"])
    {
        SecondViewController *viewController = segue.destinationViewController;
        viewController.delegate = self;
    }
}

最後に、最初のViewControllerでデリゲートからの完了した呼び出しをキャッチします。

-(void) done
{
    [self dismissModalViewControllerAnimated:YES];
}

それが私がやった方法です。プロトコルとデリゲートの経験があまりない場合、最初は混乱するように思われるかもしれませんが、私にとってはうまくいきました。

于 2012-05-31T22:00:17.130 に答える
6

右側のサイドビューコントローラーを新しいナビゲーションコントローラーでラップする必要があります。IBでそれを選択し、メニュー項目を選択するとEditor -> Embed In -> Navigation Controller、IBにナビゲーションバーが表示され、心ゆくまでカスタマイズできます。

于 2012-05-31T21:47:36.487 に答える