当前位置: 首页 > 面试题库 >

简单的App Delegate方法来显示UIAlertController(在Swift中)

法弘壮
2023-03-14
问题内容

在obj-
C中,当另一个iOS应用程序(邮件附件,Web链接)被点击了与我的应用程序关联的文件或链接时。然后,我会在openURL上捕获它,或didFinishLaunchingWithOptions显示一个UIAlertView以确认用户要导入数据。现在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时,似乎找不到一种简单的方式来显示消息:

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

我已经看到了一些复杂的方法来在StackOverflow
AppDelegate上显示UIAlertViewController,但是我希望有一些简单的方法。

我真正需要做的就是向用户显示一条简短的消息,告知他们已获得一些数据,并让他们决定要使用该数据做什么。完成后,我的应用将继续打开并进入前台(didFinishLaunchingWithOptions冷启动类似代码),并根据警报选择添加或不添加新数据。

我可以标记一个我检查所有viewWillAppear函数的全局变量,但这会重复很多,因为我有30多个视图。

让我知道您是否有任何想法。

谢谢

格雷格


问题答案:

尝试使用

self.window?.rootViewController?.presentViewController(importAlert, animated: true, completion: nil)

您只需要一个viewController对象即可显示AlertController。

在Swift 4中:

self.window?.rootViewController?.present(importAlert, animated: true, completion: nil)


 类似资料:
  • 问题内容: 在遵循一些指南时遇到问题,特别是 http://blog.originate.com/blog/2014/04/22/deeplinking-in- ios/ 我正在设置url方案,并且可以很好地从另一个应用程序启动该应用程序,但是传入主机或url不能正常工作。我正在为所有视图布局使用情节提要和界面生成器。 指南在appDelegate中显示此openURL: 这是我的版本经过简化并从

  • 问题内容: 我目前正在屏幕上显示。警报的视图应仅在警报中心显示2个元素,一个标题和一个。下面是显示警报及其元素的功能。 但是,活动指示器不会显示在视图中心,实际上它显示在屏幕的右下角,离视图很远。这是什么原因呢? 编辑:我知道我可以为指标的位置硬编码数字,但是我希望警报在具有多种屏幕尺寸和方向的多种设备上运行。 问题答案: 创建视图时,请务必设置frame属性。 到@ 62Shark:

  • 问题内容: 有没有一种更干净的方法来获取Swift中数组的最后两项?通常,我尝试避免使用这种方法,因为与索引一一对应很容易。(在此示例中,使用Swift 1.2。) 我希望有一些更接近Python的便利。 问题答案: 使用Swift 5时,您可以根据需要选择以下模式之一,以便从数组的最后两个元素中获取新的数组。 #1。使用数组的 使用Swift,符合协议的对象具有方法。数组具有以下声明: 返回一个

  • 本文向大家介绍js实现在网页上简单显示时间的方法,包括了js实现在网页上简单显示时间的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了js实现在网页上简单显示时间的方法。分享给大家供大家参考。具体如下: 这是一款网页时钟JS代码,纯javascript实现,显示时、分、秒。网页时间显示、网页时钟有很多,这个真的挺简易的,美工好的朋友可在此基础上进一步美化完善 希望本文所述对大家的jav

  • 问题内容: 当用户单击UILocalNotification时,我试图迅速从应用程序委托中加载特定的ViewController。我已经知道这是在此函数中调用的: 但是当我尝试访问一个打开的ViewController时,我认为它返回null,因为我的应用程序崩溃了。这是我正在尝试的: 在popToViewController行上崩溃了。 问题答案: 您可以尝试: 斯威夫特3:

  • 在Borland VCL库中,几乎所有控件都有提示属性。在运行时,当您将鼠标放在相应的控件上时,当您移动鼠标时,一个带有提示文本的小框会弹出并再次消失,例如Windows资源管理器和其他程序中的帮助消息,当鼠标光标放在按钮上时。 JavaFX中是否有类似的概念(实际上,我使用的是ScalaFX)? 当然,我可以创建一个没有装饰的新舞台,添加一些鼠标监听器等,但是它不是已经在某个地方可用了吗?