我创建了一个操作,我在UIAlertController
中加载来自JSON的随机数据,我希望action2
重新加载数据,以便在消息中显示另一个随机事实。这是我的代码:
@IBAction func Aleatorio(sender: AnyObject) {
Alamofire.request(.GET, "http://elpenitente.playcofrade.com/json/get_azar.php?id=\(Int(arc4random_uniform(500) + 1))").responseJSON { (responseData) -> Void in
let swiftyJsonVar = JSON(responseData.result.value!)
if let resData = swiftyJsonVar["azar"].array {
let azar = resData[0]["descripcion"].string!
let alert = UIAlertController(title: "¿Sabías que...?", message: "\(azar)", preferredStyle: UIAlertControllerStyle.Alert)
let action1 = UIAlertAction(title: "Cerrar", style: UIAlertActionStyle.Cancel, handler: nil)
let action2 = UIAlertAction(title: "Otro Dato", style: UIAlertActionStyle.Default) { (action) in
}
alert.view.tintColor = UIColor(red:0.33, green:0.0, blue:0.34, alpha:1.0)
alert.addAction(action1)
alert.addAction(action2)
self.presentViewController(alert, animated: true, completion: nil);
}
}
}
答案 0 :(得分:0)
您无法修改已显示的警报控制器。实际上,点击操作按钮将关闭警报控制器。
您需要在action2中提供新的警报控制器。基本上,只需在action2中调用self.Aleatorio(发送者)。
let action2 = UIAlertAction(title: "Otro Dato", style: UIAlertActionStyle.Default) { (action) in
self.Aleatorio(sender)
}
此代码在每次进入网络时都不是特别有效,这可能会引入延迟。最初从数据库中获取大量事实可能会更好,然后每次随机选择其中一个。
此外,按照惯例,方法名称和变量以小写字母开头,因此函数应为aleatorio