当iPhone应用程序首次启动iOS 8时显示操作表

时间:2014-10-16 23:56:19

标签: swift ios8 uiactionsheet

我的iPhone应用程序只有在应用程序第一次启动时才需要显示操作表。我如何在Swift中完成这项工作?谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

您想要查看UIAlertController。 UIActionSheet已弃用。这很容易使用。

使用Obj-C,您可以使用conventience方法创建实例,将样式设置为actionSheet。然后为工作表上的每个“按钮”调用addAction。以下是您可以使用的一些代码:

- (IBAction)actionButtonAction:(id)sender {
    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Select an action" message:nil preferredStyle:UIAlertControllerStyleActionSheet];

    [alertController addAction:[UIAlertAction actionWithTitle:@"Share Data" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
        // Your activity
    }]];

    [alertController addAction:[UIAlertAction actionWithTitle:@"Share Plot" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
        // Your activity
    }]];



    [alertController addAction:[UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
        // User cancelled
    }]];

    // Present VC. 
    [self presentViewController:alertController animated:YES completion:^{

    }];
}

答案 1 :(得分:0)

您将拥有一个在应用程序启动时打开的视图控制器(当您第一次启动swift项目时,您的故事板中将包含一个视图控制器,这是根控制器,以及最初的“viewController.swift”)在项目中生成的文件已连接到它。

来自该根控制器(或您用作初始视图控制器的任何视图控制器)

您可以创建,配置和呈现为ViewDidAppear方法中的ActionSheet样式配置的UIAlertController。

就像这样

class ViewController: UIViewController {

    override func viewDidLoad() {

    super.viewDidLoad()
    }



override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)

    let userDefaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()

    let firstTimeLoggingIn: Bool? = userDefaults.objectForKey("firstTimeLogin") as? Bool

    if (firstTimeLoggingIn == nil) {
        userDefaults.setBool(true, forKey: "firstTimeLogin")
        actionSheetForFirstLogin()
    }

}

func actionSheetForFirstLogin() {
    let actionSheet: UIAlertController = UIAlertController(title: "the  title", message: "the message", preferredStyle: .ActionSheet)

    let callActionHandler = { (action:UIAlertAction!) -> Void in
        let alertMessage = UIAlertController(title: action.title, message: "You chose an action", preferredStyle: .Alert)
        alertMessage.addAction(UIAlertAction(title: "OK", style: .Default, handler: nil))
        self.presentViewController(alertMessage, animated: true, completion: nil)
    }

    let action1: UIAlertAction = UIAlertAction(title: "action title 1", style: .Default, handler:callActionHandler)

    let action2: UIAlertAction = UIAlertAction(title: "action title 2", style: .Default, handler:callActionHandler)

    actionSheet.addAction(action1)
    actionSheet.addAction(action2)

    presentViewController(actionSheet, animated: true, completion:nil)
}

}

这也分离了操作表的动作处理程序,因此您可以看到如何独立创建它们并添加它们。在这个例子中,我只创建了一个,并检查了动作标题,以显示将根据选择显示的警报;但是,您总是可以创建单独的操作。

修改

我已添加NSUserDefaults来处理首次登录方案