【发布时间】:2015-05-18 00:43:20
【问题描述】:
我正在使用带有两个按钮的非常基本的 UIAlertController 设置。
var alert = UIAlertController(title: "Leave player?",
message: "You will not be able to return to this routine after!",
preferredStyle: .Alert)
let cancelAction: UIAlertAction = UIAlertAction(title: "Continue", style: .Cancel) { action -> Void in
println("here")
}
let deleteAction: UIAlertAction = UIAlertAction(title: "Leave", style: .Default) { action -> Void in
println("here")
}
alert.addAction(cancelAction)
alert.addAction(deleteAction)
self.presentViewController(alert, animated: true, completion: nil)
此代码在同一个视图上工作,并带有来自程序不同部分的推送序列。结构在哪里:
(MainView) -push> (View1) -push> (View2) -push> (ThisView)
现在 AlertController 弹出窗口和按钮返回简单的文本输出。
但在以下情况下,AlertController 弹出但单击按钮不返回任何内容,我的断点永远不会触发或只是检查控制台的文本输出不返回任何内容。
(MainView) -modal> (ThisView)
当然,我尝试将第二种情况下的 segue 设置为 push segue,但它并没有改变任何东西。 所以为了正确起见,AlertController 确实会弹出,但按钮根本没有响应。我可以指定一个替代代表吗?
现在,我花了一整天的时间来做一些简单的工作。我已经尝试过大多数技巧,例如延迟或异步块。
现在我有点想尝试了。所以请有人告诉我我做错了什么:)
更新
在导航控制器中嵌入 MainView 并将 segue 更改为 Push segue,使按钮按下响应.. 我可以考虑添加导航控制器来解决这个问题,但我想保留 Modal segue 的动画。 有什么想法吗?
临时解决方案
现在我将使用 push segue 和导航控制器来解决这个问题。它不是最佳的,因为这个视图应该表现为一个弹出窗口而不是像 segue 那样的推送,但它确实有效。
【问题讨论】:
-
您能指定代码的声明位置吗?在 MainView 中还是在 ThisView 中?
-
您能否发布更多代码/故事板,以便我们更好地了解显示此警报时发生的情况?
-
代码在ThisView上声明,距离mainView只有1个segue。 ThisView 也可以从程序的不同部分访问,该部分之间有 x 数量的 push segues。在 ThisView 上,还有一个每秒滴答的计时器,但我禁用了它,并且大多数事情发生在那里,所以它不应该做任何事情。此外,我从程序的不同部分运行警报,viewdidload,viewdidappear 并在其中一个循环中(如果禁用计时器,它们会被禁用,你可能会要求禁用它)所以我的想法与模态 segue 构造有关。
-
您在呈现警报时是否关闭了
modal视图控制器? -
不,但这将是按下离开按钮时的功能。但是这些按钮不会在模态视图之上注册。当我将其更改为推送(segue)并将其连接到导航控制器时,按钮会响应..
标签: ios swift uialertcontroller