【问题标题】:Unable to direct to another view controller using alert action无法使用警报操作定向到另一个视图控制器
【发布时间】:2019-02-11 03:55:17
【问题描述】:

我希望在出现的警报操作中单击“确定”按钮时将用户定向到另一个视图控制器。用户必须在单击 OK 按钮时被引导,而不是在显示此警报时立即引导。这是我尝试过的:

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

应用程序不会崩溃,但在单击“确定”按钮时它也不会指向我的其他视图控制器。我该如何解决这个问题?

如果有人可以帮助我,我会很高兴!

编辑:我相信我的问题被误解了,所以我试图更清楚地解释事情,对不起我的英语不好。

【问题讨论】:

  • 错误信息说明了一切。
  • 错误信息很清楚,检查您的视图控制器的 StoryboardId 并将其更改为“FourthViewController”。
  • 确保您添加了相同的视图控制器,其标识符为“FourthViewController”

标签: ios swift cocoa-touch storyboard alert


【解决方案1】:

转到故事板中所谓的“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: "FourthViewController")
    self.navigationController!.pushViewController(uivc, animated: true)
}))
self.present(alert, animated: true)

【讨论】:

  • 感谢您的回复!输入身份后,应用程序现在不会崩溃,它运行时不会崩溃。但是,当警报显示时,应用程序不会指向其他视图控制器。我对代码有什么遗漏吗?
  • 不幸的是它不起作用,我什至没有看到任何警报出现:(
  • 对不起,添加了最后一行...你仍然需要出示警报 lololol
  • 现在会显示警报,但是当我单击“确定”按钮时,应用程序崩溃并出现此错误:由于未捕获的异常“InvalidPathValidation”而终止应用程序,原因:“(子项:)必须是非空字符串且不包含 '.' '#' '$' '[' 或 ']''。很抱歉占用您的时间我只是想解决这个问题:(
  • 这可能是您正在导航到的屏幕中的问题...新视图控制器的 viewDidLoad() 中有什么?
【解决方案2】:
  1. 确保调用正确的 nib 文件
  2. 确保在 storyboard 中设置了 storyboard id。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多