pushViewController без навигационного контроллера - PullRequest
14 голосов
/ 10 августа 2011

У меня есть класс типа UITableViewController. Этот класс имеет член типа UINavigationBar, который я использую для добавления в кнопку редактирования для представления таблицы.

Использование этого вызова метода недопустимо.

[self.navigationController pushViewController:controller];

Как я могу выдвинуть подробный вид на вид после выбора строки таблицы без переноса моего UITableViewController в UINavigationController?

Ответы [ 5 ]

38 голосов
/ 10 августа 2011

Ближайшей альтернативой, если вы не хотите использовать контроллер навигации, являются контроллеры модального представления.

[self presentViewController:controller animated:YES completion:nil];

Это будет перемещать контроллер на экран снизу, или если вы измените modalTransitionStyle контроллера, он может перевернуться или исчезнуть.

Чтобы закрыть диспетчер, просто позвоните:

[self dismissViewControllerAnimated:YES completion:nil];
15 голосов
/ 25 мая 2015

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

Чтобы скрыть контроллер навигации с помощью раскадровок: выберите его и снимите флажок «Показать панель навигации» в инспекторе атрибутов.Другие могут предложить скрыть панель навигации в каждом контроллере, но проблема в том, что она будет отображаться в течение миллисекунды, а затем исчезнет.

Navigation Controller attributes tab

10 голосов
/ 06 декабря 2012

Я бы обернул UITableView внутри UINavigationController и просто скрыл UINavigationBar.

[self.navigationController setNavigationBarHidden:YES animated:NO];

И затем создал бы кнопку возврата, которая выталкивает ViewController из стека.

[self.navigationController popViewControllerAnimated:YES]
6 голосов
/ 10 августа 2011

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

Вы можете вставить произвольный UINavigationItem s на ваш UINavigationBar,и представитель вашего бара будет уведомлен, когда пользователь использует кнопку «Назад», чтобы вы могли предпринять соответствующие действия.См. документацию для получения дополнительной информации.

1 голос
/ 17 июня 2017

Это правда, что без UINavigationController вы не можете выдвинуть контроллеры вида.Вы скорее представляете контроллеры представления модально через UIViewController.present(_ viewControllerToPresent:, animated:, completion:)

Но возможно создать пользовательский переход для отображения контроллера представления, как если бы это был толчок (или любая другая анимация, которую вы хотите), хотя кажется, что при использованииUINavigationController только упрощает процесс.

Вот несколько ссылок на документацию:

Справочник по классам UINavigationController

Настройка переходаАнимации

Представление модального контроллера вида

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