2012-05-31 10 views
5

ナビゲーションアイテム(スクリーンショットの右のビュー)を使用してモーダルビューを作成したいと思います。私のアプリケーションはTabBarアプリケーションです。このビューにタブバーが表示されないようにしたいのですが、以前のビュー(スクリーンショットの左側のビュー)をタイプ "プッシュ"と同様のセグで読み込みたいです。 モーダルビューとしてロードされている場合、NavigationBar & TabBarがなくなった場合、左側のビューに右ナビゲーションを戻すためにプッシュセグを作成することができます。このための回避策はありますか? ありがとうございます!ナビゲーションバーと戻るボタンを含むモーダルビューを作成する

Here's my screenshot

+0

(右の)モーダルビューを表示し、左に表示されているUITableViewに戻るために戻るボタンを表示しないと何が問題になりますか? – tarheel

+0

これは動的なコンテンツを持つUIWebViewなので、戻るボタンをナビゲーションバーに入れたい –

答えて

12

新しいボタンをクリックするだけで、Navbarを新しいビューに配置できます。バーボタン項目からビューコントローラーの.hへのコントロールのドラッグによって、バーボタン項目のアクションを作成します。

@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 
:あなたは、このように、ボタンが押されたときに最初のコントローラを伝えるために、あなたの2番目のビューで行う方法とプロトコルを作成し、それはとても [self dismissModalViewControllerAnimated:YES];

を使用しているデリゲートとプロトコルメソッドを使用することができますあなたの最初のビューコントローラは、プロトコルに<SecondViewControllerDelegate>

を実装する必要があります

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

は、あなたのボタンから、あなたのアクションでこれを呼び出します

最初のビューコントローラで、セグを行う前に2番目のビューコントローラのデリゲートとして設定します。

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

は最後に、あなたの最初のビューコントローラでデリゲートから行わ呼び出しをキャッチ:

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

はそれ、私はそれを行っている方法です。プロトコルと代理人の経験があまりない場合、最初は混乱しているように思えますが、それは私にとってはうまくいきました。

+0

タイプミスがあると私は申し訳ありません。 –

6

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

+0

これはモーダルビューとして表示されますか? –

+0

はい、確かです。 iPadでは、これをより小さく中央のビューにすることができます。あなたは解読のために、ナビゲーションバーに独自のボタンを実装する必要があります。 – Mundi

+1

ありがとうございます。 iOS 7では、ナビゲーションバーをドラッグするだけで、ナビゲーションバーとは異なり、「タイムバー」の背景に灰色の背景がないため、表示が悪くなります。しかし、この方法は問題を解決し、よりエレガントに見えます。 –

関連する問題