如果没有互联网连接,我会弹出一个UIAlertController。当连接恢复时,我不知道如何正确地解除它。我每隔10秒就会检查一次,如果我这样做的话:
self.dismissViewControllerAnimated(true, completion: nil)
一旦警报视图被解除,这将在每个间隔关闭主视图。我试过了:
let alert = UIAlertController(title: "No internet Connection", message: "Make sure your device is connected to the internet.", preferredStyle: UIAlertControllerStyle.Alert)
if Reachability.isConnectedToNetwork() == true {
print("Internet connection OK")
alert.dismissViewControllerAnimated(true, completion: nil)
} else {
print("Internet connection FAILED")
self.presentViewController(alert, animated: true, completion: nil)
}
但alert.dismissViewControllerAnimated(true, completion: nil)
不起作用。
谢谢!
答案 0 :(得分:1)
我认为,问题是多次出现 UIAlertController 并试图解雇UIAlertController的一个实例..所以你需要在呈现之前解除UIAlertController,如下所示
$sql="SELECT * FROM products";
extract($_POST);
if(isset($size) && isset($price))
$sql.=" WHERE size IN (".implode(',', $size).") OR price IN (".implode(',', $price).")";
else if(isset($size))
$sql.=" WHERE size IN (".implode(',', $size).")";
else if(isset($price))
$sql.=" WHERE (price IN (".implode(',', $price)."))";
$all_row=$db->query($sql);
答案 1 :(得分:1)
这对我有用:谢谢@OS_Binod和@Pyro
let alert = UIAlertController(title: "No internet Connection", message: "Make sure your device is connected to the internet.", preferredStyle: UIAlertControllerStyle.Alert)
if Reachability.isConnectedToNetwork() == true {
print("Internet connection OK")
self.dismissViewControllerAnimated(false, completion: nil)
} else {
print("Internet connection FAILED")
alert.dismissViewControllerAnimated(false, completion: nil)
self.presentViewController(alert, animated: false, completion: nil)
}
答案 2 :(得分:0)
我认为问题可能是您在显示警报之前试图解除警报
<强>更新强> 如果您想在互联网恢复后才解除警报,请在显示“UIAlertController”之后立即显示“UIAlertController”的引用。
在你的情况下,你试图解除新创建的对象的“警告”,这个对象甚至没有显示,所以你需要在互联网回来之前创建新的对象之前解雇旧的对象
此外,如果您每隔10秒调用该方法,则会在显示新警报之前解除旧警报以避免多重警报,否则您可以在警报已经显示的情况下制作标记,方法将不会每10秒再次检查,直到警报解除为止
更好的选择是: 检查互联网连接外部,如果没有互联网连接,那么只创建UIAlertController
更新1 您可以将警报作为全局变量并在您在else块中创建警报对象时存储警报对象,当互联网恢复时,您可以检查警报是否有对象,如果是,您可以解雇警报
if Reachability.isConnectedToNetwork() == true {
print("Internet connection OK")
if alert != nil {
alert.dismissViewControllerAnimated(true, completion: nil)
}
//dismiss the alert using old refence from the alert
//continue your normal code
} else {
alert = UIAlertController(title: "No internet Connection", message: "Make sure your device is connected to the internet.", preferredStyle: UIAlertControllerStyle.Alert)
//you may check and dismiss the previous alertcontroller before presenting the new one
print("Internet connection FAILED")
self.presentViewController(alert, animated: true, completion: nil)
}