我为我的应用设置了一个alertcontroller,它的工作方式是如果部分得分高于10,你会得到一个ui警报。
现在我的问题是,如果我有超过10的2或3个部分,我只会显示第一个UIalert,id就像一个接一个地看到所有这些(如果这个sutuation发生
这是我的代码:
func SectionAlert () {
var message1 = NSLocalizedString("Section 1 score is now ", comment: "");
message1 += "\(section1score)";
message1 += NSLocalizedString(" please review before continuing", comment: "1");
var message2 = NSLocalizedString("Section 2 score is now ", comment: "");
message2 += "\(section2score)";
message2 += NSLocalizedString(" please review before continuing", comment: "2");
var message3 = NSLocalizedString("Section 3 score is now ", comment: "");
message3 += "\(section3score)";
message3 += NSLocalizedString(" please review before continuing", comment: "3");
if (section1score >= 10){
let alertController: UIAlertController = UIAlertController(title: NSLocalizedString("Section 1 score is over 10", comment: ""),
message: " \(message1)",
preferredStyle: .Alert)
let OKAction = UIAlertAction(title: "OK", style: .Default) {
action -> Void in }
alertController.addAction(OKAction)
self.presentViewController(alertController, animated: true, completion: nil)
} else if (section2score >= 10){
let alertController: UIAlertController = UIAlertController(title: NSLocalizedString("Section 2 Score is over 10", comment: ""),
message: "\(message2)",
preferredStyle: .Alert)
let OKAction = UIAlertAction(title: "OK", style: .Default) {
action -> Void in }
alertController.addAction(OKAction)
self.presentViewController(alertController, animated: true, completion: nil)
} else if (section3score >= 10){
let alertController: UIAlertController = UIAlertController(title: NSLocalizedString("Section 3 Score is over 10", comment: ""),
message: "\(message3)",
preferredStyle: .Alert)
let OKAction = UIAlertAction(title: "OK", style: .Default) {
action -> Void in }
alertController.addAction(OKAction)
self.presentViewController(alertController, animated: true, completion: nil)
}
}
任何想法??
谢谢!
答案 0 :(得分:1)
主要问题是您使用else if
。第2节和第3节条件将不会被测试,除非之前的条件评估为false
。
所以你想改变这个:
if (section1score >= 10){
// …
} else if (section2score >= 10){
// …
} else if (section3score >= 10){
// …
}
看起来更像是这样:
if (section1score >= 10){
// …
}
if (section2score >= 10){
// …
}
if (section3score >= 10){
// …
}
也就是说,您将无法同时呈现三个视图控制器。您可能希望更新代码以将消息合并为一个警报。 (这比用户同时出现三个模态警报更好。)
答案 1 :(得分:0)
好的,我已经弄清楚了,我已经完成的是当我在视图上按OK时运行代码,以便检查其他部分然后在需要时弹出另一部分。
我把它推到了
之后action -> Void in
非常感谢