в моем текущем приложении я хочу использовать определенный UICollectionView
несколько раз, но с другим поведением выбора. Рассмотрим следующий макет раскадровки как «есть» (и работающий):
Tab Bar Controller (2 items): -> Navigation Controller 1 -> Collection View Controller -> some Table View Controller -> Navigation Controller 2 -> (Basic) View Controller
Basic View Controller
имеет два UIButtons
, которые имеют Push
соединения Storyboard с Collection View Controller
. Я хочу перейти от Basic View Controller
к Collection View Controller
, но выбор элемента из коллекции должен вывести представление и вернуться к Basic View Controller
.
Я установил пользовательское свойство в Collection View Controller
, которое устанавливается в соответствующем сообщении prepareForSegue
Basic View Controller
(или вообще не устанавливается, если пользователь выбирает Tab Bar Item
), поэтому нет проблем с определением того, какой контроллер или какой компонент пользовательского интерфейса инициировал push ( есть 3 способа: выбор элемента панели вкладок или нажатие одной из кнопок в основном представлении).
Проблема заключается в том, чтобы вытолкнуть файл Collection View
.
Мой код до сих пор:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ( self.mode == nil ) { // do nothing } else if ( [self.mode isEqualToString:@"foobar"] ) { // one way I tried [self dismissViewControllerAnimated:YES completion:nil]; } else if ( [self.mode isEqualToString:@"blah"] ) { // other method BasicViewController *targetVC = self.navigationController.viewControllers[ 0 ]; [self.navigationController popToViewController:targetVC animated:YES]; } }
К сожалению, мое приложение вылетает в строках dismiss
соответственно. popToViewController
. Возможно ли использовать одни и те же контроллеры представления для разных способов навигации?
Я надеюсь, что информации достаточно, чтобы помочь мне в этом. Как вы, возможно, знаете, проекты растут, и я не знаю, есть ли еще код для рассмотрения :)
Заранее спасибо!