2012-02-15 17 views
3

新しいアイテムを追加するときに、追加画面を表示するためのCoreDataRecipesアプリに従っています。しかし、私はバーを上部に表示させることができないので、「完了」または「キャンセル」を押すことができます。iOS:Modal UITableViewControllerにナビゲーションバーを追加しようとしています

モーダルコントローラーを呼び出すxibでは、私は+ボタンを使用して、コントローラーをIBを介してモーダルにスライドさせるようにしました。私はその画面を離れることができない何のバーが存在しない以外

私は私のモーダルコントローラに以下の私のviewDidLoad

self.navigationItem.title = @"Add"; 

    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(cancel)]; 
    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Save" style:UIBarButtonItemStyleDone target:self action:@selector(save)]; 
    self.navigationController.navigationBarHidden = NO; 

を持つモーダルコントローラは、細かい表示されます。

答えて

12

実際にポップオーバーが表示される前に追加する必要があります。

モーダルポップオーバーを作成する場合は、最初にUINavigationController内に作成する必要があります。

だから、以下を実行してください。

PopoverView *foo = [[PopoverView alloc] initWithNibName:@"PopoverView" bundle:nil]; 
// Here you pass through properties if you need too. 
// ... 
UINavigationController *navC = [[UINavigationController alloc] initWithRootView:foo]; 
[foo release]; 

[self.navigationController presentModalViewController:navC animated:YES]; 

これで、編集しようとしているナビゲーションバーがモーダル表示になります。

+0

基本的にIBセグのリンクを使用するのは無意味ですか? – Bot

+0

はい、これはすべてプログラムによって実行されます。モーダルビューを表示するために使用するメソッドは、内部にあります。 –

4

とすると、ストーリーボードのセグを維持できます。 Xcodeで、移行しようとしているビューコントローラを選択し、ナビゲーションコントローラに埋め込みます。

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(cancel)]; 

を最後にコールバック:

は今、そのビューコントローラののviewDidLoadで、追加

- (void)cancel { 
    [self dismissModalViewControllerAnimated:YES]; 
} 
+0

** to ** 'UIViewController'を' prepareForSegue'する必要がある場合は、この[solution](http://stackoverflow.com/questions/8580429/prepareforsegue-and-delegates)を見てください。 ** to ** 'UIViewController'が入っている' UINavigationController'を指しているのでそのまま 'destinationViewController'を使うことはできません。 – Interfector

0

するか、あなただけのバーの外観ではなく、正確にその機能が必要な場合は、メディアライブラリパネルのナビゲーションバー(UINavigationBar)またはツールバー(UIToolbar)コントロールをビューにドラッグしてそこから移動することができます。

0

私は、containerViewにUITableViewControllerをロードしていたのと同様の苦境がありました。 containerViewは、モーダルな方法で提示されていたUIViewControllerの内部にありました。

私はあなたのように、タイトルと完了/キャンセルボタンを持つナビゲーションバーが必要でした。

は、スタックをオーバーフローした後、私は最終的にこれをしなかった -

をIBでテーブルビューの最初の項目としてのUIViewをドラッグ。これは自動的に44ptの高さをとり、トップにスナップされました。また、私の最初のセクションを下にシフトしました。

このビュー内でUIButton(完了ボタン)をドラッグしました。それにIBOutletを作成し、

[self dismissViewControllerAnimated:YES completion:nil]; 

は免責と呼ばれる:

1)この偽のナビゲーションバーは、テーブルビューと一緒にスクロールします。 2)これはBotが尋ねたことに対する解決策ではないかもしれませんが、類似のものを探している他の人にとってはオプションです。

関連する問題