2017-02-18 3 views
2

У меня есть вторичное ViewController, который появляется программно с помощью раскадровки Segue:Swift dismissViewController из Segue - Macos

func actioncall() 
{ 
    performSegue(withIdentifier: "showIgnoreVC", sender: self) 

} 

)

Эта функция является частью основного ViewController, и называется через NSNotification из AppDelegate, который, в свою очередь, запускается нажатием на пункт меню.

Однако, даже несмотря на то, переход связан с основной ViewController, следующий код не отклоняет вторичный вид:

@IBAction func dismiss(_ sender: Any) 
{ 
    print("Hello? Gonna close?") 

    self.presenting?.dismissViewController(self) 
} 

Там нет ошибок, функция вызывается при правильной Отклонить кнопку щелкните, но вторичное представление не будет отменено. Я пробовал все варианты отклоненияViewController безрезультатно.

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

Любые идеи приветствуются, большое вам спасибо.

+0

Когда эта линия 'self.presenting? .dismissViewController (self)' выполняется, какова ценность 'self.presenting'? –

+0

@DaveWeston, хороший вопрос. Используя 'let x = self.presenting! как NSViewController', приложение вылетает с ** фатальной ошибкой: неожиданно найдено нуль при развертывании необязательного значения **. По-видимому, нет представления viewController. –

ответ

1

dismissViewController работает только для контроллеров отображения, которые были представлены модально (с использованием Present Modally Segue) Как сказал в ответ на this SO question, вы должны отклонить контроллеры просмотра, представленные Show Segue, как это:

navigationController?.popViewController(animated: true) 
dismiss(animated: true, completion: nil) 
+0

увольнениеПросмотрСтройлер работает для контроллеров представлений, представленных в виде листа, и показывает также. В этом проекте отсутствует navigationController. Спасибо вам за ваш вклад. –

Смежные вопросы