Обработчик быстрых предупреждений не работает в конкретном случае - PullRequest
0 голосов
/ 06 сентября 2018

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

let alert = UIAlertController(title: "Succesful", message: "Successfully added!", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: { _ in
let uivc = self.storyboard!.instantiateViewController(withIdentifier: "ViewController")
    self.navigationController!.pushViewController(uivc, animated: true)
 }))
 self.present(alert, animated: true)

Однако я получаю эту ошибку, когда нажимаю кнопку ОК.

'InvalidPathValidation', причина: '(child :) Должна быть непустой строкой и не содержать'. ' '#' '$' '[' или ']' '

FourthViewController создается на основе выбора пользователя на последних трех viewcontroller. Существует уникальный контроллер четвертого представления, основанный на комбинации ячеек табличного представления, выбранных в предыдущих контроллерах представления. Я полагаю, что проблема возникает потому, что когда я направляю пользователя в FourthViewController, приложение не знает, что содержит FourthViewController, так как ранее не было нажатых ячеек таблицы. Когда я меняю направление VC с FourthViewController на FirstViewController, все работает потрясающе.

Возможно ли исправить эту проблему? Буду признателен за любую помощь! Большое спасибо и хорошего дня!

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Удалить следующее завершение действия формы строки

  let uivc = self.storyboard!.instantiateViewController(withIdentifier:"ViewController")
  self.navigationController!.pushViewController(uivc, animated: true)

и создайте функцию, как показано ниже

 func navigate(){

 let uivc = self.storyboard!.instantiateViewController(withIdentifier:"ViewController")
  self.navigationController!.pushViewController(uivc, animated: true)

   }

теперь добавьте следующее в завершении действия

 self.navigate() 

как показано ниже

let alert = UIAlertController(title: "Succesful", message: "Successfully added!", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: { _ in
 self.navigate() 
  }))
 self.present(alert, animated: true)
0 голосов
/ 06 сентября 2018

Если я правильно понял, у FourthViewController есть некоторые переменные, которые зависят от предыдущих ViewController. В этом случае просто инициализируйте эти переменные, установив их значение: uivc.varName = value

Вы также можете выполнить переход вместо создания экземпляра контроллера представления, и вы можете установить значения nextViewController в функции подготовки.

...