试图背靠背呈现2个UIAlertControllers

时间:2016-06-29 17:51:47

标签: ios swift uiviewcontroller alert uialertcontroller

我有一个car_insurance_type_id = params[:car_insurance_type_id] || 1 car_insurance_objects_private = car_model_search.car_insurance_objects.where(car_insurance_type_id: car_insurance_type_id) ,其中的选项从数组中填充并呈现给用户。然后,用户从警报中选择一个选项。在此之后,我有一个单独的警报,为用户提供一个确认消息,其中包含一个正常的按钮。

UIAlertController

上面的代码收集数组中的数据并将其推送到myAlert中的操作中。上面的代码在for循环中。

在此之后,我使用一个函数来检索最顶层的视图控制器,然后按下一个警报。

myAlert.addAction(UIAlertAction.init(title: item, style: .Default, handler: { 
    (UIAlertAction) in
         self.chosenBusiness.append(businessNameData[item]!)
}))
self.presentViewController(myAlert, animated: true, completion: nil)

我收到的错误是:

  

尝试加载视图控制器的视图   取消分配并且不被允许,可能导致未定义的行为。   UIAlertController:0x1535b1cd0。

有人可以帮我吗?

1 个答案:

答案 0 :(得分:2)

我认为这就是你要找的东西。必须通过第一个解雇行动来调用第二个。此外,无论何时使用UI,使用dispatch_async(dispatch_get_main_queue()) { \\code }

都会更安全

如果你不肯定,那么你现在正在主要队列中。

let firstAlertController = UIAlertController(title: "First", message: "This is the first message.", preferredStyle: UIAlertControllerStyle.Alert)

let secondAlertController = UIAlertController(title: "Second", message: "This is the second message.", preferredStyle: UIAlertControllerStyle.Alert)
let secondDismissAction = UIAlertAction(title: "Dismiss", style: UIAlertActionStyle.Default, completion: nil)
secondAlertController.addAction(secondDismissAction)

let firstDismissAction = UIAlertAction(title: "Dismiss", style: UIAlertActionStyle.Default) {
    UIAlertAction in
    dispatch_async(dispatch_get_main_queue()) {
        self.presentViewController(secondAlertController, animated: true, handler: nil)
    }
}

firstAlertController.addAction(firstDismissAction)
self.presentViewController(firstAlertController, animated: true, completion: nil)