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

Вывести текущее представление с помощью Segues/Storyboard на iOS 5

Я создаю приложение с помощью iOS 5 SDK. Мне удалось нажимать виды, используя Storyboard Segues, но я не могу найти подходящий способ вывести текущее представление и вернуться к предыдущему.

Я не использую navigationController (приложение не имеет верхних или нижних баров).

Я не думаю, что использование модального или push segue другим способом было бы решением, поскольку оно создает новый контроллер.

Должен ли я использовать пользовательский Segue с противоположной анимацией и удалением представления в конце? Или есть лучший способ?

4b9b3361

Ответ 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 {

}

Вы можете добавить любой код очистки, который вы хотите выполнить в этом методе. Затем перейдите в свою раскадровку и выберите толкаемый вид. Я предполагаю, что у вас есть какая-то кнопка на вид, которую пользователь нажимает на сигнал, чтобы он закончил. Нажмите на эту кнопку, удерживайте клавишу и перетащите ее в зеленую рамку под видом, который является выводом. Отпустите кнопку мыши, но продолжайте удерживать клавишу. Появится всплывающее окно, и ваш метод отобразится в списке. Выберите этот метод. Теперь, когда пользователь нажимает на кнопку, появится представление, и вы вернетесь к методу запуска.