如果超过某个计算值,我正在尝试使用AlertController来允许用户返回主菜单。我知道使用简单的segue会导致内存问题。有没有办法在这种情况下使用popToRootViewController方法而不是简单地使用segue?编译器对我大喊大叫(毫无疑问是有充分理由的),但没有给我任何有用的建议。我知道问题源于Abort Fit动作的处理程序。有人能指出我正确的方向吗?
override func viewDidLoad() {
super.viewDidLoad()
if deltaK > 2.25 {
var helpAlert = UIAlertController(title: "Stop!", message: "Due to high toricity, the fit should be aborted.", preferredStyle: .Alert)
helpAlert.addAction(UIAlertAction(title: "Abort Fit", style: UIAlertActionStyle.Default, handler: { action in self.navigationController.popToRootViewControllerAnimated(true)) })
helpAlert.addAction(UIAlertAction(title: "Continue", style: UIAlertActionStyle.Default, handler: nil))
self.presentViewController(helpAlert, animated: true, completion: nil)
}
答案 0 :(得分:2)
如果要在闭包中引用_1
,则需要将[weak self]
添加到每个处理程序块的开头。
答案 1 :(得分:0)
我忽略了解开问题。将[weak self]添加到闭包会触发编译器发出错误信号。此代码按预期工作。 nhgrif指出了使用带有viewDidLoad的Alert的问题。我应该寻找另一种方法吗?
override func viewDidLoad() {
super.viewDidLoad()
if deltaK > 2.25 {
var helpAlert = UIAlertController(title: "Stop!", message: "Due to the high corneal toricity, a toric GP lens may provide better fit, vision, and comfort. Consider using the Empirical GP lens designer from the Main Menu, or use toric GP fitting set.", preferredStyle: .Alert)
helpAlert.addAction(UIAlertAction(title: "Abort Fit", style: UIAlertActionStyle.Default, handler: { [weak self] action in self!.navigationController?.popToRootViewControllerAnimated(true) }))
helpAlert.addAction(UIAlertAction(title: "Continue", style: UIAlertActionStyle.Default, handler: nil))
self.presentViewController(helpAlert, animated: true, completion: nil)
}