我的应用中有一个重置按钮。我编写了它,以便如果用户点击它来重置应用程序,他们首先会显示用户警报。此警报提供信息并提供两种选择:(1)取消,(2)继续。
这个想法是,如果他们点击取消,游戏将不会重置。但如果他们点击继续,游戏将重置。
问题1
目前,当用户点击重置按钮时,游戏会立即重置,然后显示警告。显示警报后,如果他们点击“取消”则不会再发生任何事情,但如果他们点击“继续”,游戏将再次重置!
因此,从表面上看,警报按钮可以正常工作 - 只需点击重置图标就可以在警报出现之前执行重置操作。
第2期
我的警报代码适合iOS 8及以上用户以及iOS 8之前的用户。如何更改代码的这一部分,以便为iOS 8之前的用户提供“取消”或“继续”功能?目前他们只是获得了“继续”选项。
我的警报代码如下:
@IBAction func buttonResetGame(sender: UIButton) {
if #available(iOS 8.0, *) {
let alert = UIAlertController(title: "Info", message: "This will reset your score and questions.", preferredStyle: UIAlertControllerStyle.Alert)
// add the Continue button and action
alert.addAction(UIAlertAction(title: "Continue", style: UIAlertActionStyle.Destructive, handler: {action in
// do this...
self.ResetGame()
}))
// add the Cancel button and action
alert.addAction(UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel, handler: nil))
self.presentViewController(alert, animated: true, completion: nil)
}else{
// For pre-iOS 8 users
let alert = UIAlertView()
alert.title = "Info"
alert.message = "This will reset your score and questions."
alert.addButtonWithTitle("Continue")
alert.show()
}
ResetGame()
}
如果相关,我的重置游戏代码如下:
func ResetGame() {
PlaySoundReset()
score = 0
totalquestionsasked = 0
SaveScore()
LoadScore()
}
答案 0 :(得分:1)
在if / else:
之后删除额外的ResetGame()调用@IBAction func buttonResetGame(sender: UIButton) {
if #available(iOS 8.0, *) {
let alert = UIAlertController(title: "Info", message: "This will reset your score and questions.", preferredStyle: UIAlertControllerStyle.Alert)
// add the Continue button and action
alert.addAction(UIAlertAction(title: "Continue", style: UIAlertActionStyle.Destructive, handler: {action in
// do this...
self.ResetGame()
}))
// add the Cancel button and action
alert.addAction(UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel, handler: nil))
self.presentViewController(alert, animated: true, completion: nil)
}else{
// For pre-iOS 8 users
let alert = UIAlertView()
alert.title = "Info"
alert.message = "This will reset your score and questions."
alert.addButtonWithTitle("Continue")
alert.show()
}
ResetGame() //remove this line ? You are calling the RestGame func...
}
对于问题的第二部分,您需要将警报视图的委托设置为“self”或其他,然后实现UIAlertViewDelegate方法:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex NS_DEPRECATED_IOS(2_0, 9_0);
按钮索引将为您提供每个按钮,即0和1。