iOS: попытка добавить панель навигации в модальный UITableViewController - PullRequest
3 голосов
/ 16 февраля 2012

Я слежу за приложением 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

Модальный контроллер отображается нормально, за исключением отсутствия полосы, поэтому я не могу покинуть этот экран.

Ответы [ 4 ]

13 голосов
/ 16 февраля 2012

Вам нужно добавить его до того, как на самом деле будет представлен поповер.

Когда вы создаете модальный поповер, вам сначала нужно создать его внутри 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];

Это даст модальному виду панель навигации, которую вы пытаетесь редактировать.

4 голосов
/ 18 февраля 2012

В качестве альтернативы , вы можете поддерживать переход на раскадровку. В Xcode выберите контроллер представления, к которому вы пытаетесь перейти, и вставьте его в контроллер навигации.

Теперь в viewDidLoad этого контроллера представления добавьте:

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

и, наконец, обратный вызов:

- (void)cancel {
    [self dismissModalViewControllerAnimated:YES];
}
0 голосов
/ 21 ноября 2013

У меня было похожее затруднение, когда я загружал UITableViewController в containerView.Контейнерный вид был внутри UIViewController, который был представлен в модальном стиле.

Мне, как и вам, требовалась навигационная панель, чтобы иметь заголовок и кнопку Готово / Отмена.

После переполнениястек, я наконец сделал это -

Перетащил UIView в качестве первого элемента в представлении таблицы в IB.Это автоматически взяло высоту 44 очка и привязалось к вершине.Это также сместило мою первую секцию вниз.

Я перетащил кнопку UIB (кнопка Готово) внутри этого вида.Создал для него IBOutlet и назвал

    [self dismissViewControllerAnimated:YES completion:nil];

Отказ от ответственности:

1) Эта фальшивая панель навигации будет прокручиваться вместе с табличным представлением.2) Возможно, это не решение того, о чем спросил Бот, но это вариант для тех, кто ищет что-то подобное.

0 голосов
/ 03 мая 2013

Или, если вам нужен только внешний вид панели, а не ее функциональность, вы можете перетащить элемент управления «Панель навигации» (UINavigationBar) или «Панель инструментов» (UIToolbar) из панели «Медиатека» на представление и перейти оттуда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...