警告:UIAlertController 已经呈现
Warning: UIAlertController is already presenting
我是swift和XCode的新手所以请原谅我可能真的很乱的代码!
当 运行 我的代码时,我收到以下警告:
警告:尝试在已经在展示的
上展示
我已经查看了论坛并找到了关于该问题的post....我应用了以下建议的帮助:
if presentedViewController !== nil {
self.presentViewController(alertController, animated: true, completion: nil)
} else{
self.dismissViewControllerAnimated(false, completion: nil)
self.presentViewController(alertController, animated: true, completion: nil)
}
然而,它仍然给了我同样的警告....所以我想我一定是在那里做错了什么。如果有人可以帮助我,那就太好了 :) 另外,如果有任何关于如何 "clean" 改进我的代码的建议,我们将不胜感激 :)
import UIKit
class ViewController: UIViewController {
@IBOutlet var Label: UILabel!
@IBOutlet var ukFlag: UITextView!
@IBOutlet var movie: UITextView!
@IBOutlet var piano: UITextView!
@IBOutlet var book: UITextView!
@IBOutlet var dance: UITextView!
@IBOutlet var paint: UITextView!
@IBOutlet var row: UITextView!
@IBOutlet var envelope: UITextView!
@IBOutlet var dragon: UITextView!
@IBOutlet var instagram: UITextView!
func londonPuzzle(sender: UIPanGestureRecognizer) {
let translation = sender.translationInView(self.view)
sender.view!.center = CGPoint(x: sender.view!.center.x + translation.x, y: sender.view!.center.y + translation.y)
sender.setTranslation(CGPointZero, inView: self.view)
self.ifCollided()
}
func misleadOne(sender: UIPanGestureRecognizer) {
let translation = sender.translationInView(self.view)
sender.view!.center = CGPoint(x: sender.view!.center.x + translation.x, y: sender.view!.center.y + translation.y)
sender.setTranslation(CGPointZero, inView: self.view)
self.ifCollided()
}
func bestival(sender: UIPanGestureRecognizer) {
let translation = sender.translationInView(self.view)
sender.view!.center = CGPoint(x: sender.view!.center.x + translation.x, y: sender.view!.center.y + translation.y)
sender.setTranslation(CGPointZero, inView: self.view)
self.ifCollided()
}
func rosieProject(sender: UIPanGestureRecognizer) {
let translation = sender.translationInView(self.view)
sender.view!.center = CGPoint(x: sender.view!.center.x + translation.x, y: sender.view!.center.y + translation.y)
sender.setTranslation(CGPointZero, inView: self.view)
self.ifCollided()
}
func misleadTwo(sender: UIPanGestureRecognizer) {
let translation = sender.translationInView(self.view)
sender.view!.center = CGPoint(x: sender.view!.center.x + translation.x, y: sender.view!.center.y + translation.y)
sender.setTranslation(CGPointZero, inView: self.view)
self.ifCollided()
}
func misleadThree(sender: UIPanGestureRecognizer) {
let translation = sender.translationInView(self.view)
sender.view!.center = CGPoint(x: sender.view!.center.x + translation.x, y: sender.view!.center.y + translation.y)
sender.setTranslation(CGPointZero, inView: self.view)
self.ifCollided()
}
func misleadFour(sender: UIPanGestureRecognizer) {
let translation = sender.translationInView(self.view)
sender.view!.center = CGPoint(x: sender.view!.center.x + translation.x, y: sender.view!.center.y + translation.y)
sender.setTranslation(CGPointZero, inView: self.view)
self.ifCollided()
}
func voucher(sender: UIPanGestureRecognizer) {
let translation = sender.translationInView(self.view)
sender.view!.center = CGPoint(x: sender.view!.center.x + translation.x, y: sender.view!.center.y + translation.y)
sender.setTranslation(CGPointZero, inView: self.view)
self.ifCollided()
}
func welsh(sender: UIPanGestureRecognizer) {
let translation = sender.translationInView(self.view)
sender.view!.center = CGPoint(x: sender.view!.center.x + translation.x, y: sender.view!.center.y + translation.y)
sender.setTranslation(CGPointZero, inView: self.view)
self.ifCollided()
}
func hulk(sender: UIPanGestureRecognizer) {
let translation = sender.translationInView(self.view)
sender.view!.center = CGPoint(x: sender.view!.center.x + translation.x, y: sender.view!.center.y + translation.y)
sender.setTranslation(CGPointZero, inView: self.view)
self.ifCollided()
}
func ShowAlertWrong(){
let alertController = UIAlertController(title: "Sorry", message: " Guess again!", preferredStyle: .Alert)
let okAction = UIAlertAction( title: "Ok", style: UIAlertActionStyle.Default) {
UIAlertAction in
self.ukFlag.center = CGPointMake(150, 225)
self.movie.center = CGPointMake(150, 225)
self.piano.center = CGPointMake(150, 225)
self.dance.center = CGPointMake(150, 225)
self.paint.center = CGPointMake(150, 225)
self.row.center = CGPointMake(150, 225)
self.envelope.center = CGPointMake(150, 225)
self.dragon.center = CGPointMake(150, 225)
self.instagram.center = CGPointMake(150, 225)
}
let resetAction = UIAlertAction( title: "Reset", style: UIAlertActionStyle.Default) {
UIALertAction in
self.ukFlag.center = CGPointMake(150, 225)
self.movie.center = CGPointMake(150, 225)
self.piano.center = CGPointMake(150, 225)
self.dance.center = CGPointMake(150, 225)
self.paint.center = CGPointMake(150, 225)
self.row.center = CGPointMake(150, 225)
self.envelope.center = CGPointMake(150, 225)
self.dragon.center = CGPointMake(150, 225)
self.instagram.center = CGPointMake(150, 225)
}
alertController.addAction(okAction)
alertController.addAction(resetAction)
self.presentViewController(alertController, animated: true, completion: nil)
}
func ShowAlertWin(){
let alertController = UIAlertController(title: "Congrats", message: " You are correct!", preferredStyle: .Alert)
let okAction = UIAlertAction( title: "Ok", style: UIAlertActionStyle.Default) {
UIAlertAction in
self.book.center = CGPointMake(150, 150)
}
/* let resetAction = UIAlertAction( title: "Reset and hope the mood has changed", style: UIAlertActionStyle.Default) {
UIALertAction in
self.Angry.center = CGPointMake(150, 150)
}*/
alertController.addAction(okAction)
// alertController.addAction(resetAction)
if presentedViewController !== nil {
self.presentViewController(alertController, animated: true, completion: nil)
} else{
self.dismissViewControllerAnimated(false, completion: nil)
self.presentViewController(alertController, animated: true, completion: nil)
}
}
@IBAction func ifCollided(){
if CGRectIntersectsRect(Label.frame, ukFlag.frame) {
ShowAlertWrong()
}
else if CGRectIntersectsRect(Label.frame, movie.frame){
ShowAlertWrong()
} else if CGRectIntersectsRect(Label.frame, piano.frame){
ShowAlertWrong()
} else if CGRectIntersectsRect(Label.frame, dance.frame){
ShowAlertWrong()
} else if CGRectIntersectsRect(Label.frame, paint.frame){
ShowAlertWrong()
} else if CGRectIntersectsRect(Label.frame, row.frame){
ShowAlertWrong()
} else if CGRectIntersectsRect(Label.frame, envelope.frame){
ShowAlertWrong()
} else if CGRectIntersectsRect(Label.frame, dragon.frame){
ShowAlertWrong()
} else if CGRectIntersectsRect(Label.frame, instagram.frame){
ShowAlertWrong()
} else if CGRectIntersectsRect(Label.frame, book.frame){
ShowAlertWin()
}
}
override func viewDidLoad() {
super.viewDidLoad()
ukFlag.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(self.londonPuzzle(_:))))
movie.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(self.misleadOne(_:))))
piano.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(self.bestival(_:))))
book.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(self.rosieProject(_:))))
dance.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(self.misleadTwo(_:))))
paint.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(self.misleadThree(_:))))
row.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(self.misleadFour(_:))))
envelope.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(self.voucher(_:))))
dragon.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(self.welsh(_:))))
instagram.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(self.hulk(_:))))
}
}
您需要像这样更改您的代码,在关闭完成时显示第二个 alertController。也用我的改变你的 if 条件。
if presentedViewController == nil {
self.presentViewController(alertController, animated: true, completion: nil)
} else{
self.dismissViewControllerAnimated(false) { () -> Void in
self.presentViewController(alertController, animated: true, completion: nil)
}
}
希望对您有所帮助。
试试这个
if let presented = self.presentedViewController {
presented.removeFromParentViewController()
}
if presentedViewController == nil {
self.present(alert, animated: true, completion: nil)
}
您可以呈现另一个 UIAlertController 或您想要从当前呈现的 UIAlertController 获得的任何其他内容。
创建一个辅助函数以获得最高可见性 viewcontroller 然后在其上进行 present 调用
func topVisibleViewController(viewController: UIViewController) -> UIViewController? {
let viewController = viewController ?? UIApplication.shared.keyWindow?.rootViewController
if let navigationController = viewController as? UINavigationController, !navigationController.viewControllers.isEmpty {
return visibleViewController(navigationController.viewControllers.last)
}
else if let tabBarController = viewController as? UITabBarController,
let selectedController = tabBarController.selectedViewController {
return visibleViewController(selectedController)
}
else if let presentedController = viewController?.presentedViewController {
return visibleViewController(presentedController)
}
return viewController
}
我感谢所有答案中提到的警报的解除。但就我个人而言,我绝不会拒绝放弃我一开始不想想到的东西。因此,如果我们能够首先查看为什么会生成多个警报,那就太棒了。
使用 UIGestureRecogniser
生成 UIAlert 很棘手。手势以其所有基础状态发送消息。例如:如果下面是我的代码:
// Attaching LongPress to a button
let longPressGesture = UILongPressGestureRecognizer(target: self, action: #selector(deleteSelectedProfile(_:)))
// Method to generate appropriate alert
@objc func deleteSelectedProfile(_ sender: UILongPressGestureRecognizer) {
let alert = UIAlertController(title: "Delete Profile", message: "Word!" , preferredStyle: .alert)
let deleteAction = UIAlertAction(title: "Delete", style: .destructive) { (action) in
// Code
}
alert.addAction(deleteAction)
let cancelAction = UIAlertAction(title: "Cancel", style: .default, handler: nil)
alert.addAction(cancelAction)
present(alert, animated: true, completion: nil)
}
UIAlert 被调用用于各种手势状态,从 .began
开始,直到 .ended
。因此,如果干净的代码是我所需要的,我将永远不想关闭在 Gesture 的每个状态下创建的任何警报,而只会生成一个 UIAlert。意思是,我会简单地使用状态作为我的条件。
因此,这是我要更改的内容:
@objc func deleteSelectedProfile(_ sender: UILongPressGestureRecognizer) {
if sender.state == .began {
let alert = UIAlertController(title: "Delete Profile", message: "Word!" , preferredStyle: .alert)
let deleteAction = ...
alert.addAction(deleteAction)
let cancelAction = ...
alert.addAction(cancelAction)
present(alert, animated: true, completion: nil)
}
}
这样我将生成一个警报,仅在需要时生成一个警报。
这就是我在 Swift 4.2 中调试此错误的方式:
let alert = UIAlertController(title: "Oops!", message: "No Internet Connection", preferredStyle: .alert)
let alertAction = UIAlertAction(title: "OK", style: .default)
alert.addAction(alertAction)
if let presented = self.presentedViewController {
presented.removeFromParent()
}
if presentedViewController == nil {
self.present(alert, animated: true, completion: nil)
}
}
试试这个:
[self dismissViewControllerAnimated:YES completion:nil];
UIAlertController *alertResync = [UIAlertController alertControllerWithTitle:@"Warning"
message:@"Warning Warning"
preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *softResyncButton = [UIAlertAction actionWithTitle:@"No, keep Some"
style:UIAlertActionStyleDefault
handler:^(UIAlertAction * _Nonnull action) {
}];
UIAlertAction *hardResyncButton = [UIAlertAction actionWithTitle:@"Yes"
style:UIAlertActionStyleDestructive
handler:^(UIAlertAction * _Nonnull action) {
[self testFunc];
}];
[alertResync addAction:softResyncButton];
[alertResync addAction:hardResyncButton];
[self presentViewController:alertResync animated:YES completion:nil];
我是swift和XCode的新手所以请原谅我可能真的很乱的代码! 当 运行 我的代码时,我收到以下警告: 警告:尝试在已经在展示的
上展示我已经查看了论坛并找到了关于该问题的post....我应用了以下建议的帮助:
if presentedViewController !== nil {
self.presentViewController(alertController, animated: true, completion: nil)
} else{
self.dismissViewControllerAnimated(false, completion: nil)
self.presentViewController(alertController, animated: true, completion: nil)
}
然而,它仍然给了我同样的警告....所以我想我一定是在那里做错了什么。如果有人可以帮助我,那就太好了 :) 另外,如果有任何关于如何 "clean" 改进我的代码的建议,我们将不胜感激 :)
import UIKit
class ViewController: UIViewController {
@IBOutlet var Label: UILabel!
@IBOutlet var ukFlag: UITextView!
@IBOutlet var movie: UITextView!
@IBOutlet var piano: UITextView!
@IBOutlet var book: UITextView!
@IBOutlet var dance: UITextView!
@IBOutlet var paint: UITextView!
@IBOutlet var row: UITextView!
@IBOutlet var envelope: UITextView!
@IBOutlet var dragon: UITextView!
@IBOutlet var instagram: UITextView!
func londonPuzzle(sender: UIPanGestureRecognizer) {
let translation = sender.translationInView(self.view)
sender.view!.center = CGPoint(x: sender.view!.center.x + translation.x, y: sender.view!.center.y + translation.y)
sender.setTranslation(CGPointZero, inView: self.view)
self.ifCollided()
}
func misleadOne(sender: UIPanGestureRecognizer) {
let translation = sender.translationInView(self.view)
sender.view!.center = CGPoint(x: sender.view!.center.x + translation.x, y: sender.view!.center.y + translation.y)
sender.setTranslation(CGPointZero, inView: self.view)
self.ifCollided()
}
func bestival(sender: UIPanGestureRecognizer) {
let translation = sender.translationInView(self.view)
sender.view!.center = CGPoint(x: sender.view!.center.x + translation.x, y: sender.view!.center.y + translation.y)
sender.setTranslation(CGPointZero, inView: self.view)
self.ifCollided()
}
func rosieProject(sender: UIPanGestureRecognizer) {
let translation = sender.translationInView(self.view)
sender.view!.center = CGPoint(x: sender.view!.center.x + translation.x, y: sender.view!.center.y + translation.y)
sender.setTranslation(CGPointZero, inView: self.view)
self.ifCollided()
}
func misleadTwo(sender: UIPanGestureRecognizer) {
let translation = sender.translationInView(self.view)
sender.view!.center = CGPoint(x: sender.view!.center.x + translation.x, y: sender.view!.center.y + translation.y)
sender.setTranslation(CGPointZero, inView: self.view)
self.ifCollided()
}
func misleadThree(sender: UIPanGestureRecognizer) {
let translation = sender.translationInView(self.view)
sender.view!.center = CGPoint(x: sender.view!.center.x + translation.x, y: sender.view!.center.y + translation.y)
sender.setTranslation(CGPointZero, inView: self.view)
self.ifCollided()
}
func misleadFour(sender: UIPanGestureRecognizer) {
let translation = sender.translationInView(self.view)
sender.view!.center = CGPoint(x: sender.view!.center.x + translation.x, y: sender.view!.center.y + translation.y)
sender.setTranslation(CGPointZero, inView: self.view)
self.ifCollided()
}
func voucher(sender: UIPanGestureRecognizer) {
let translation = sender.translationInView(self.view)
sender.view!.center = CGPoint(x: sender.view!.center.x + translation.x, y: sender.view!.center.y + translation.y)
sender.setTranslation(CGPointZero, inView: self.view)
self.ifCollided()
}
func welsh(sender: UIPanGestureRecognizer) {
let translation = sender.translationInView(self.view)
sender.view!.center = CGPoint(x: sender.view!.center.x + translation.x, y: sender.view!.center.y + translation.y)
sender.setTranslation(CGPointZero, inView: self.view)
self.ifCollided()
}
func hulk(sender: UIPanGestureRecognizer) {
let translation = sender.translationInView(self.view)
sender.view!.center = CGPoint(x: sender.view!.center.x + translation.x, y: sender.view!.center.y + translation.y)
sender.setTranslation(CGPointZero, inView: self.view)
self.ifCollided()
}
func ShowAlertWrong(){
let alertController = UIAlertController(title: "Sorry", message: " Guess again!", preferredStyle: .Alert)
let okAction = UIAlertAction( title: "Ok", style: UIAlertActionStyle.Default) {
UIAlertAction in
self.ukFlag.center = CGPointMake(150, 225)
self.movie.center = CGPointMake(150, 225)
self.piano.center = CGPointMake(150, 225)
self.dance.center = CGPointMake(150, 225)
self.paint.center = CGPointMake(150, 225)
self.row.center = CGPointMake(150, 225)
self.envelope.center = CGPointMake(150, 225)
self.dragon.center = CGPointMake(150, 225)
self.instagram.center = CGPointMake(150, 225)
}
let resetAction = UIAlertAction( title: "Reset", style: UIAlertActionStyle.Default) {
UIALertAction in
self.ukFlag.center = CGPointMake(150, 225)
self.movie.center = CGPointMake(150, 225)
self.piano.center = CGPointMake(150, 225)
self.dance.center = CGPointMake(150, 225)
self.paint.center = CGPointMake(150, 225)
self.row.center = CGPointMake(150, 225)
self.envelope.center = CGPointMake(150, 225)
self.dragon.center = CGPointMake(150, 225)
self.instagram.center = CGPointMake(150, 225)
}
alertController.addAction(okAction)
alertController.addAction(resetAction)
self.presentViewController(alertController, animated: true, completion: nil)
}
func ShowAlertWin(){
let alertController = UIAlertController(title: "Congrats", message: " You are correct!", preferredStyle: .Alert)
let okAction = UIAlertAction( title: "Ok", style: UIAlertActionStyle.Default) {
UIAlertAction in
self.book.center = CGPointMake(150, 150)
}
/* let resetAction = UIAlertAction( title: "Reset and hope the mood has changed", style: UIAlertActionStyle.Default) {
UIALertAction in
self.Angry.center = CGPointMake(150, 150)
}*/
alertController.addAction(okAction)
// alertController.addAction(resetAction)
if presentedViewController !== nil {
self.presentViewController(alertController, animated: true, completion: nil)
} else{
self.dismissViewControllerAnimated(false, completion: nil)
self.presentViewController(alertController, animated: true, completion: nil)
}
}
@IBAction func ifCollided(){
if CGRectIntersectsRect(Label.frame, ukFlag.frame) {
ShowAlertWrong()
}
else if CGRectIntersectsRect(Label.frame, movie.frame){
ShowAlertWrong()
} else if CGRectIntersectsRect(Label.frame, piano.frame){
ShowAlertWrong()
} else if CGRectIntersectsRect(Label.frame, dance.frame){
ShowAlertWrong()
} else if CGRectIntersectsRect(Label.frame, paint.frame){
ShowAlertWrong()
} else if CGRectIntersectsRect(Label.frame, row.frame){
ShowAlertWrong()
} else if CGRectIntersectsRect(Label.frame, envelope.frame){
ShowAlertWrong()
} else if CGRectIntersectsRect(Label.frame, dragon.frame){
ShowAlertWrong()
} else if CGRectIntersectsRect(Label.frame, instagram.frame){
ShowAlertWrong()
} else if CGRectIntersectsRect(Label.frame, book.frame){
ShowAlertWin()
}
}
override func viewDidLoad() {
super.viewDidLoad()
ukFlag.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(self.londonPuzzle(_:))))
movie.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(self.misleadOne(_:))))
piano.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(self.bestival(_:))))
book.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(self.rosieProject(_:))))
dance.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(self.misleadTwo(_:))))
paint.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(self.misleadThree(_:))))
row.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(self.misleadFour(_:))))
envelope.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(self.voucher(_:))))
dragon.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(self.welsh(_:))))
instagram.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(self.hulk(_:))))
}
}
您需要像这样更改您的代码,在关闭完成时显示第二个 alertController。也用我的改变你的 if 条件。
if presentedViewController == nil {
self.presentViewController(alertController, animated: true, completion: nil)
} else{
self.dismissViewControllerAnimated(false) { () -> Void in
self.presentViewController(alertController, animated: true, completion: nil)
}
}
希望对您有所帮助。
试试这个
if let presented = self.presentedViewController {
presented.removeFromParentViewController()
}
if presentedViewController == nil {
self.present(alert, animated: true, completion: nil)
}
您可以呈现另一个 UIAlertController 或您想要从当前呈现的 UIAlertController 获得的任何其他内容。 创建一个辅助函数以获得最高可见性 viewcontroller 然后在其上进行 present 调用
func topVisibleViewController(viewController: UIViewController) -> UIViewController? {
let viewController = viewController ?? UIApplication.shared.keyWindow?.rootViewController
if let navigationController = viewController as? UINavigationController, !navigationController.viewControllers.isEmpty {
return visibleViewController(navigationController.viewControllers.last)
}
else if let tabBarController = viewController as? UITabBarController,
let selectedController = tabBarController.selectedViewController {
return visibleViewController(selectedController)
}
else if let presentedController = viewController?.presentedViewController {
return visibleViewController(presentedController)
}
return viewController
}
我感谢所有答案中提到的警报的解除。但就我个人而言,我绝不会拒绝放弃我一开始不想想到的东西。因此,如果我们能够首先查看为什么会生成多个警报,那就太棒了。
使用 UIGestureRecogniser
生成 UIAlert 很棘手。手势以其所有基础状态发送消息。例如:如果下面是我的代码:
// Attaching LongPress to a button
let longPressGesture = UILongPressGestureRecognizer(target: self, action: #selector(deleteSelectedProfile(_:)))
// Method to generate appropriate alert
@objc func deleteSelectedProfile(_ sender: UILongPressGestureRecognizer) {
let alert = UIAlertController(title: "Delete Profile", message: "Word!" , preferredStyle: .alert)
let deleteAction = UIAlertAction(title: "Delete", style: .destructive) { (action) in
// Code
}
alert.addAction(deleteAction)
let cancelAction = UIAlertAction(title: "Cancel", style: .default, handler: nil)
alert.addAction(cancelAction)
present(alert, animated: true, completion: nil)
}
UIAlert 被调用用于各种手势状态,从 .began
开始,直到 .ended
。因此,如果干净的代码是我所需要的,我将永远不想关闭在 Gesture 的每个状态下创建的任何警报,而只会生成一个 UIAlert。意思是,我会简单地使用状态作为我的条件。
因此,这是我要更改的内容:
@objc func deleteSelectedProfile(_ sender: UILongPressGestureRecognizer) {
if sender.state == .began {
let alert = UIAlertController(title: "Delete Profile", message: "Word!" , preferredStyle: .alert)
let deleteAction = ...
alert.addAction(deleteAction)
let cancelAction = ...
alert.addAction(cancelAction)
present(alert, animated: true, completion: nil)
}
}
这样我将生成一个警报,仅在需要时生成一个警报。
这就是我在 Swift 4.2 中调试此错误的方式:
let alert = UIAlertController(title: "Oops!", message: "No Internet Connection", preferredStyle: .alert)
let alertAction = UIAlertAction(title: "OK", style: .default)
alert.addAction(alertAction)
if let presented = self.presentedViewController {
presented.removeFromParent()
}
if presentedViewController == nil {
self.present(alert, animated: true, completion: nil)
}
}
试试这个:
[self dismissViewControllerAnimated:YES completion:nil];
UIAlertController *alertResync = [UIAlertController alertControllerWithTitle:@"Warning"
message:@"Warning Warning"
preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *softResyncButton = [UIAlertAction actionWithTitle:@"No, keep Some"
style:UIAlertActionStyleDefault
handler:^(UIAlertAction * _Nonnull action) {
}];
UIAlertAction *hardResyncButton = [UIAlertAction actionWithTitle:@"Yes"
style:UIAlertActionStyleDestructive
handler:^(UIAlertAction * _Nonnull action) {
[self testFunc];
}];
[alertResync addAction:softResyncButton];
[alertResync addAction:hardResyncButton];
[self presentViewController:alertResync animated:YES completion:nil];