在obj- C中,当另一个iOS应用程序(邮件附件,Web链接)被点击了与我的应用程序关联的文件或链接时。然后,我会在openURL上捕获它,或didFinishLaunchingWithOptions显示一个UIAlertView以确认用户要导入数据。现在UIAlertView折旧了,我正在尝试做同样的事情,但不确定是否最好的方法吗?
didFinishLaunchingWithOptions
UIAlertView
当我的应用程序从另一个应用程序接收数据时,我无法显示简单的警报。这段代码在Objective-C中可以正常工作UIAlertView:
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { if (url) { self.URLString = [url absoluteString]; NSString *message = @"Received a data exchange request. Would you like to import it?"; importAlert = [[UIAlertView alloc] initWithTitle:@"Data Received" message:message delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil]; [importAlert show]; } return YES; }
但是当我尝试切换到UIAlertViewControllerSwift时,似乎找不到一种简单的方式来显示消息:
UIAlertViewController
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject?) -> Bool { let URLString: String = url.absoluteString! let message: String = "Received data. Would you like to import it?" var importAlert: UIAlertController = UIAlertController(title: "Data Received", message: message, preferredStyle: UIAlertControllerStyle.Alert) importAlert.addAction(UIAlertAction(title: "Cancel", style: .Cancel, handler: nil)) importAlert.addAction(UIAlertAction(title: "Ok", style: .Default, handler: { action in switch action.style { case .Default: println("default") case .Cancel: println("cancel") case .Destructive: println("destructive") } })) self.presentViewController(importAlert, animated: true, completion: nil) return true }
我收到AppDelegate没有名为成员的编译时错误presentViewController
AppDelegate
presentViewController
我已经看到了一些复杂的方法来在StackOverflow AppDelegate上显示UIAlertViewController,但是我希望有一些简单的方法。
我真正需要做的就是向用户显示一条简短的消息,告知他们已获得一些数据,并让他们决定要使用该数据做什么。完成后,我的应用将继续打开并进入前台(didFinishLaunchingWithOptions冷启动类似代码),并根据警报选择添加或不添加新数据。
我可以标记一个我检查所有viewWillAppear函数的全局变量,但这会重复很多,因为我有30多个视图。
viewWillAppear
让我知道您是否有任何想法。
谢谢
格雷格
尝试使用
self.window?.rootViewController?.presentViewController(importAlert, animated: true, completion: nil)
您只需要一个viewController对象即可显示AlertController。
viewController
在Swift 4中:
self.window?.rootViewController?.present(importAlert, animated: true, completion: nil)