Вывести текущее представление с помощью Segues/Storyboard на iOS 5
Я создаю приложение с помощью iOS 5 SDK. Мне удалось нажимать виды, используя Storyboard Segues, но я не могу найти подходящий способ вывести текущее представление и вернуться к предыдущему.
Я не использую navigationController (приложение не имеет верхних или нижних баров).
Я не думаю, что использование модального или push segue другим способом было бы решением, поскольку оно создает новый контроллер.
Должен ли я использовать пользовательский Segue с противоположной анимацией и удалением представления в конце? Или есть лучший способ?
Ответы
Ответ 1
Вы можете попробовать позвонить [self dismissViewControllerAnimated:YES completion:nil];
с контроллера, который хотите отклонить (будь то контроллер нажат или показан по умолчанию).
Вот соответствующая документация: Ссылка на класс UIViewController
Контроллер представления представления отвечает за отклонение представленного контроллера представления. Если вы вызываете этот метод на представленном контроллере представления, он автоматически пересылает сообщение в контроллер представления.
Ответ 2
Раскадровки в iOS 5 не предоставляют способ "no-code" для возврата из segue - это то, что вам нужно реализовать самостоятельно.
Если вы используете "push" segues (для которых требуется контроллер навигации), используйте метод навигационного контроллера popViewControllerAnimated:
для отмены последнего нажатия. (Или другие способы отменить больше, см. Документацию UINavigationController
.)
Если вы используете "modal" segues, вызовите dismissViewControllerAnimated:completion:
на контроллере представления, который представил текущий контроллер представления (который вы можете получить из его свойства presentingViewController
).
Обновление: в iOS 6 и более поздних версиях раскручиваются фрагменты для перехода "назад" в раскадровку. Это все еще не решение без кода, и этого не должно быть, потому что вы должны иметь возможность делать такие вещи, как различие между выводами "Готово" и "Отмена" с модального контроллера. Но это позволяет помещать больше семантического потока вашего приложения в раскадровку. Apple имеет техническую заметку которая описывает их подробно, и они также рассматриваются в видео с WWDC 2012 Сессия 407.
Ответ 3
Просто уточнить.
В классе, который был нажат. Просто подключите следующее, и контроллер и просмотр будут удалены.
[self.navigationController popViewControllerAnimated:YES];
Ответ 4
Создайте тип Segue "Custom" на вашей доске. Это может быть кнопка.
Создайте новый класс UIStoryboardSegue с именем "popSegue"
В файле popSegue.m добавьте следующее:
-(void)perform{
UIViewController *sourceViewContreoller = [self sourceViewController];
[sourceViewContreoller.navigationController popViewControllerAnimated:YES];
}
- В редакторе раскадровки.
-Выберите сегю и измените класс Segue на "popSegue"
-Установите идентификатор на "popSegue"
Готово!
Вы можете использовать один и тот же класс popSegue во всем своем проекте.
Надеюсь, что это поможет
Ответ 5
Я также использую Xcode 5 и здесь, как это делается. Во-первых, в файле кода представления, который подтолкнул другого, создайте метод IBAction в файле .h, например:
- (IBAction)exitToHere:(UIStoryboardPopoverSegue *)segue sender:(id)sender;
Then in the .m file add this:
- (IBAction)exitToHere:(UIStoryboardPopoverSegue *)segue sender:(id)sender {
}
Вы можете добавить любой код очистки, который вы хотите выполнить в этом методе. Затем перейдите в свою раскадровку и выберите толкаемый вид. Я предполагаю, что у вас есть какая-то кнопка на вид, которую пользователь нажимает на сигнал, чтобы он закончил. Нажмите на эту кнопку, удерживайте клавишу и перетащите ее в зеленую рамку под видом, который является выводом. Отпустите кнопку мыши, но продолжайте удерживать клавишу. Появится всплывающее окно, и ваш метод отобразится в списке. Выберите этот метод. Теперь, когда пользователь нажимает на кнопку, появится представление, и вы вернетесь к методу запуска.