我想通过在用户点击UIAlertController弹出消息的特定按钮时调用pushViewController
来打开新的视图控制器。
我尝试了以下操作(代码在rootViewController中):
let alertController = UIAlertController(title: title, message: "My message", preferredStyle: UIAlertControllerStyle.alert)
alertController.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.default, handler: {action in
let vc = ViewController2()
self.navigationController?.pushViewController(vc, animated: true)
print("called pushViewController")
}))
消息“称为pushViewController”已成功打印。但是,新的viewController不会出现(相同的命令可在未在此设置之外执行时显示第二个视图控制器)。
我的理论是,当调用此动作时,UIAlertController
位于初始视图控制器的顶部,这禁止从初始视图控制器调用命令pushViewController
-是正确的吗? ?
我该如何解决?
注意:This即使在将代码更新为新的Swift之后也无法正常工作。即使这样,上面的命令也应该有一个解决方案,因为它们在每种情况下都可以推入视图控制器。
答案 0 :(得分:0)
如果您的代码执行时没有崩溃,我想您的navigationController为nil。要进行检查,请在
处设置一个断点print("called pushViewController")
并检查是否
self.navigationController
是否为零。如果为nil,则说明您没有导航控制器,因此无法将新的vc推送到堆栈中。下面的行仍然会执行,您的情况似乎会发生这种情况。
答案 1 :(得分:0)
在点击return text.replaceAll("([AEIOUY])", "$1OB");
ok
希望这对您有帮助
答案 2 :(得分:0)
正如您所解释的,首先我建议您使用警报样式 .actionsheet 而不是 .alert 。
当您在答案之一中评论为 navigationController 为零时,则需要将导航控制器添加到要重定向的特定视图控制器。请按照以下步骤操作:
选择视图控制器->编辑器->嵌入->导航控制器