Подтвердить что ты не робот

PushViewController без навигационного контроллера

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

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

[self.navigationController pushViewController:controller];

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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

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

[self dismissViewControllerAnimated:YES completion:nil];

Ответ 3

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

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

Navigation Controller attributes tab

Ответ 4

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

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

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

[self.navigationController popViewControllerAnimated:YES]

Ответ 5

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

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

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

Ссылка на класс UINavigationController

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

Представление Modal View Controller