iOS:モーダルuitableviewcontrollerにナビゲーションバーを追加しようとしています
-
25-10-2019 - |
質問
新しいアイテムを追加したいときに、ADD画面を表示するMODALY用のCoreDatareCipesアプリをフォローしています。ただし、「完了」または「キャンセル」を押すことができるように、上部にバーを表示することはできません。
モーダルコントローラーを呼び出すXIBでは、IBを介してコントローラーをモダンにスライドさせるために +ボタンをリンクします。
私は私のモーダルコントローラーに以下を持っています
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;
私のviewdidloadで
モーダルコントローラーは、バーがないことを除いて正常に表示されるため、その画面を離れることはできません。
解決
ポップオーバーが実際に提示される前に追加する必要があります。
モーダルポップオーバーを作成する場合、最初に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];
これにより、モーダルビューに編集しようとしているナビゲーションバーが表示されます。
他のヒント
または、または, 、ストーリーボードセグエを維持できます。 Xcodeで、移行しようとしているビューコントローラーを選択し、ナビゲーションコントローラーに埋め込みます。
次に、そのビューコントローラーの視聴時に、次を追加します。
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(cancel)];
そして最後にコールバック:
- (void)cancel {
[self dismissModalViewControllerAnimated:YES];
}
または、その機能ではなくバーの外観が必要な場合は、ナビゲーションバー(UinavigationBar)またはツールバー(Uitoolbar)コントロールをメディアライブラリパネルからビューにドラッグして、そこから移動できます。
私は同様の苦境があり、それがコンテンツにuableviewcontrollerをロードしていました。 ContainerViewは、モーダルファッションで提示されていたUiviewController内にありました。
あなたと同じように、タイトルと完了/キャンセルボタンを持つためにナビゲーションバーが必要でした。
スタックをあふれた後、私はついにこれをしました -
IBのテーブルビューの最初のアイテムとしてUiviewをドラッグしました。これにより、自動的に44ポイントの高さがかかり、上部にスナップされました。また、最初のセクションを下にシフトしました。
このビュー内にuibutton(完了したボタン)をドラッグしました。それにiboutletを作成し、呼び出しました
[self dismissViewControllerAnimated:YES completion:nil];
免責事項:
1)この偽のNAV-BARは、TableViewと一緒にスクロールします。 2)これは、BOTが尋ねたものの解決策ではないかもしれませんが、同様のものを探しているかもしれない他の人にとっては選択肢です。