iOS: Попытка добавить навигационную панель в Modal UitableViewController

StackOverflow https://stackoverflow.com/questions/9302858

  •  25-10-2019
  •  | 
  •  

Вопрос

Я следую за приложением CoredatareCipes для Modaly, показывающего экран добавления, когда я хочу добавить новый элемент. Однако я не могу заставить планку отображаться вверху, чтобы я мог нажать «DOT» или «Отмена».

В 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;

В моей просмотре загрузки

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

Это было полезно?

Решение

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

Там, где вы создаете модальный Popover, вам нужно сначала создать его внутри 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) с панели библиотеки медиа -библиотеки на свой вид и оттуда.

У меня было аналогичное затруднение, в котором я загружал UitableViewController в ContainErview. ContainErview находился внутри UiviewController, который был представлен модальным образом.

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

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

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

Я перетащил Uibutton (кнопку «Готово») внутри этого представления. Создал iBoutlet для него и позвонил

    [self dismissViewControllerAnimated:YES completion:nil];

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top