多个 UIAlertController 在 Swift 中一个接一个地显示
Multiple UIAlertControllers to show one after the other in Swift
我已经为我的应用程序设置了一个警报控制器,它的工作方式是如果部分分数高于 10,你会收到 ui 警报。
现在我的问题是,如果我有 2 或 3 个部分超过 10 个部分,我只会显示第一个 UIalert,我希望一个接一个地看到所有这些部分(如果发生这种情况
这是我的代码:
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)
}
}
有什么想法吗??
谢谢!
主要问题是您使用的是 else if
。第二和第三部分条件将不会被测试,除非前面的条件评估为 false
.
所以你想改变这个:
if (section1score >= 10){
// …
} else if (section2score >= 10){
// …
} else if (section3score >= 10){
// …
}
看起来更像这样:
if (section1score >= 10){
// …
}
if (section2score >= 10){
// …
}
if (section3score >= 10){
// …
}
也就是说,您将无法同时显示三个视图控制器。您可能希望更新代码以将消息合并为一个警报。 (与同时出现三个模态警报相比,这将是更好的用户体验。)
好的,我已经弄明白了,我所做的是当我在视图上按确定时将代码设置为 运行,以便它检查其他部分然后弹出另一个部分如果需要。
我把它放在
之后
action -> Void in
非常感谢
我已经为我的应用程序设置了一个警报控制器,它的工作方式是如果部分分数高于 10,你会收到 ui 警报。
现在我的问题是,如果我有 2 或 3 个部分超过 10 个部分,我只会显示第一个 UIalert,我希望一个接一个地看到所有这些部分(如果发生这种情况
这是我的代码:
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)
}
}
有什么想法吗??
谢谢!
主要问题是您使用的是 else if
。第二和第三部分条件将不会被测试,除非前面的条件评估为 false
.
所以你想改变这个:
if (section1score >= 10){
// …
} else if (section2score >= 10){
// …
} else if (section3score >= 10){
// …
}
看起来更像这样:
if (section1score >= 10){
// …
}
if (section2score >= 10){
// …
}
if (section3score >= 10){
// …
}
也就是说,您将无法同时显示三个视图控制器。您可能希望更新代码以将消息合并为一个警报。 (与同时出现三个模态警报相比,这将是更好的用户体验。)
好的,我已经弄明白了,我所做的是当我在视图上按确定时将代码设置为 运行,以便它检查其他部分然后弹出另一个部分如果需要。
我把它放在
之后action -> Void in
非常感谢