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

Ios Storyboarding - Увольнение модального?

Используя раскадровки, что является правильным способом отклонить модальный?

  • с помощью IBAction и написания кода для увольнения после нажатия кнопки?
  • используя segue и уведомляйте родительский контроллер представления после нажатия кнопки?
4b9b3361

Ответ 1

См. здесь Отклонение представленного контроллера просмотра примерно на полпути

Когда приходит время отклонить представленный контроллер представлений, предпочтительный подход - позволить диспетчеру представления представления отклонить его.

Итак, вы должны использовать IBAction и писать код для увольнения после нажатия кнопки

Ответ 2

Смотрите мой ответ здесь. Это дает вам два способа отклонить контроллер модального просмотра с помощью раскадровки. Мне нравится описанный метод, потому что вы добавляете класс в свой проект, а ваше возвращение из модальных представлений может быть выполнено без кода, использующего только раскадровку. Тем не менее, если вы внедрили делегат и делегировать протокол, это также хорошее место для установки оператора rejectModalViewController.

Ответ 3

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

Если вы создаете IBAction в представлении контроллера представления и назовите его соответствующим образом, например.

- (IBAction)dismissAnyModel:(id)sender
{
    [self dismissViewControllerAnimated:YES completion:nil];
}

Затем из раскадровки, где вы хотите вызвать увольнение, создайте действие для первого ответчика, как показано ниже. Вы можете расширить его, чтобы работать с несколькими презентационными контроллерами представлений, создавая уникальные имена для IBActions.

Create an outlet to first responder

Select correct IBAction

Дополнительная информация о первом ответчике и цепочке ответчиков

Ответ 4

Чтобы сделать это внутри UIStoryboard, вам нужно сначала создать объект типа UIStoryboardSegue в вашем проекте

Создание нового класса типа <code> UIStoryboardSegue </code>

Затем вставьте следующий метод внутри класса. Вот мой класс

@implementation DismissController

- (void)perform{

    UIViewController *sourceVC = self.sourceViewController;
    [sourceVC.presentingViewController dismissViewControllerAnimated:YES 
                                                          completion:nil]; 
}

Теперь вы можете использовать его внутри своего UIStoryboard. Выберите кнопку, которая должна сделать UIViewController Disappear и перетащите ее в UIViewController, к которой вы хотите перейти. В моем случае это показывает ** убрать Controller * из-за имени моего класса.

введите описание изображения здесь

Выберите его, и все готово! Существует также очень хорошее объяснение на этом веб-сайте.

Ответ 5

По ответам Alex Cio на Swift 3 и XCode 8.3:

Создать класс:

import UIKit

class DismissSegue: UIStoryboardSegue {
    override func perform() {
        self.source.presentingViewController?.dismiss(animated: true, completion: nil)
   }
}

Но в раскадровке вы должны выбрать:

Действие Segue → Custom → отклонение

Только после того, как эта опция появится в меню Action Segue

Ответ 6

Как показывает онлайн-документация Apple, диспетчер представления представления отвечает за отклонение модального (представленного) представления.

Там есть сообщение и пример здесь