重新加载UIAlertController数据

时间:2016-03-10 20:06:09

标签: ios swift uialertcontroller

我创建了一个操作,我在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);

}
}
}

1 个答案:

答案 0 :(得分:0)

您无法修改已显示的警报控制器。实际上,点击操作按钮将关闭警报控制器。

您需要在action2中提供新的警报控制器。基本上,只需在action2中调用self.Aleatorio(发送者)。

let action2 = UIAlertAction(title: "Otro Dato", style: UIAlertActionStyle.Default) { (action) in
    self.Aleatorio(sender)
}

此代码在每次进入网络时都不是特别有效,这可能会引入延迟。最初从数据库中获取大量事实可能会更好,然后每次随机选择其中一个。

此外,按照惯例,方法名称和变量以小写字母开头,因此函数应为aleatorio