快速警报动作处理程序无法在特定情况下工作

时间:2018-09-06 08:04:18

标签: ios swift alert handler

我正在创建一个显示用户评论的应用程序。用户输入评论,然后单击提交按钮,然后将出现警报操作视图。单击警报视图中的确定按钮时,我试图将用户定向到我的fourthviewcontroller。这是我的代码,应该可以正常工作。

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”,原因:“((子代:)必须是非空字符串,并且不包含”。) '#''$''['或']''

FourthViewController是基于用户在过去三个视图控制器上的选择而创建的。根据在先前视图控制器中单击的表视图单元的组合,有一个唯一的fourviewviewcontroller。我相信会出现问题是因为当我将用户定向到FourthViewController时,该应用程序不知道FourthViewController包含的内容,因为之前没有单击任何表格视图单元格。当我将VC的方向从FourthViewController更改为FirstViewController时,一切工作都非常好。

是否可以解决此问题?我将不胜感激!非常感谢您,祝你有美好的一天!

2 个答案:

答案 0 :(得分:0)

如果我理解正确,FourthViewController具有一些变量,这些变量取决于以前的ViewController。在那种情况下,只需初始化这些变量以设置其值即可:uivc.varName = value

您也可以执行segue而不是实例化视图控制器,并且可以在prepare函数中设置nextViewController的值。

答案 1 :(得分:0)

删除以下行窗体动作完成

  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)