快速警报操作处理程序不适用于特定情况



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

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)

但是,当我单击"确定"按钮时,我会收到此错误。

"无效路径验证",原因:"(子:(必须是非空字符串且不包含"。"#" "$" "[" 或 "]">

FourViewController 是根据用户对过去三个视图控制器的选择创建的。有一个独特的第四视图控制器,基于在以前的视图控制器中单击的表视图单元格的组合。我相信问题出现是因为当我将用户定向到 FourViewController 时,应用程序不知道 FourViewController 包含什么,因为之前没有单击表视图单元格。当我将VC的方向从FourViewController更改为FirstViewController时,一切都非常出色。

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

如果我理解正确,FourViewController 有一些变量依赖于以前的 ViewControllers。在这种情况下,只需初始化这些变量设置其值:uivc.varName = value

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

删除以下行表单操作完成

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)

最新更新