Отклонить Модально представленный вид сбрасывает (своего рода) контроллер панели вкладок

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

Странная проблема

Случай 1: Если я создам UINavigationController и сделаю новый viewController в качестве его корня и представлю этот NavigationController. В этом новом стеке навигации я могу легко представить представление модально и без проблем закрыть его.

Случай 2: Теперь, не создавая новый UINavigationController, я представляю представление, и когда я закрываю представление, представление ниже ведет себя странно. Например, это представление было UICollectionView, оно просто прокручивает назад к 1-й ячейке, как будто выполняет действие «перезагрузить» и «scrollTo» первую ячейку. Если PresentingView является представлением, перемещенным из rootView, он будет просто представлением popToRoot, что определенно не предназначено.

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

Я ДУМАЮ, когда закрываю представление в представлении UITabbarController, оно как бы «СБРОСИВАЕТ» все до самого первого представления текущей вкладки. Я действительно не уверен, что это правда.

Я знаю, что это концептуально, но я не могу не думать, что должно быть что-то важное, чего я здесь упускаю.


person user3806731    schedule 05.10.2015    source источник


Ответы (2)


Я совершил глупую ошибку, создав подкласс UITabbarController и определяя контроллеры навигации в viewDidAppear вместо viewdidLoad, поэтому, когда я делаю корневое представление окна контроллером панели вкладок, контроллеры навигации не устанавливаются должным образом. Вот почему все происходило в стиле панков. Было бы лучше, если бы вместо этого странного поведения был просто сбой.

person user3806731    schedule 06.10.2015
comment
Отлично!! Я совершил ту же глупую ошибку и не осознавал этого, пока не прочитал ваш пост. Огромное спасибо! - person Greg A; 15.12.2015
comment
Та же ошибка. Спасибо. - person mra214; 21.06.2016

Вы можете попробовать это, чтобы вернуться к своему первому контроллеру просмотра.

- (IBAction)buttonPressedFromVC2:(UIButton *)sender
{
    [self dismissViewControllerAnimated:YES completion:nil];
} // This is going back to VC1. 

Этот метод будет во втором файле viewcontroller.m. Это метод нажатия кнопки.

person Nirzar Gandhi    schedule 05.10.2015
comment
Спасибо за ответ, но вопрос не в том, как отклонить представление. Отклонить представление - это нормально, представляющий контроллер представления ведет себя странно после отклонения модально представленного представления. - person user3806731; 05.10.2015