仅显示设置窗口一次

时间:2012-10-05 00:01:40

标签: iphone ios xcode ios5 storyboard

我想只打开一次设置窗口,第一次打开我的应用程序。 之后,此设置窗口将不再显示,它将显示应用程序的主视图。

我不知道如何解决这个问题,因为Storyboard只有一个初始的ViewController,我需要两个(一个带有设置的ViewController,另一个带有我主视图的ViewController)。

如何在我的两个ViewController之间做出选择?

感谢。

3 个答案:

答案 0 :(得分:1)

我认为最好的方法是使用用户默认值 - 注册默认值,例如setBool:TRUE forKey:@“NeverOpened”,然后检查该值。如果为true,请让主视图控制器以模态方式显示设置控制器,然后在取消时将“NeverOpened”键的值设置为false。下次打开应用程序时,NeverOpened将为false,并且不会显示设置控制器。

答案 1 :(得分:0)

在主视图控制器的viewDidLoad:方法中检查first-app-start,如果是,请在没有动画的情况下按设置控制器。

答案 2 :(得分:0)

您的问题可以分为两部分。首先,要确定用户之前是否运行过该应用程序,您需要在用户运行应用程序的所有时间内查询持久性内容。对于少量数据,您可以使用NSUserDefaults,它基本上是一个字典。当您查询NSUserDefaults时,如果没有对应键的对象,NSUserDefaults将返回nil。利用这一点,我们可以查询像“hasRunKey”这样的密钥。如果它返回nil,则用户之前没有运行应用程序,我们应该为hasRunKey设置对象,以便将来不会出现nil。

if (![[NSUserDefaults standardUserDefaults] objectForKey:@"hasRunKey"]) {
    [[NSUserDefaults standardUserDefaults] setObject: [NSNumber numberWithBool:YES] forKey:@"hasRunKey"];
    [[NSUserDefaults standardUserDefaults] synchronize];
    // Present the settings view controller -- see explanation below. 
    [self performSegueWithIdentifier:@"My Identifier" sender:self];
} else {
    // Do what you normally do. 
}

对于第二个问题,显示设置视图控制器,您应该添加一个新文件和子类UIViewController与某种MySettingsViewController类。然后,在故事板中,从侧面板中拖出UIViewController对象。在该视图控制器的身份检查器中,将类设置为刚刚创建的MySettingsViewController。 (有关地点,请参阅此图片:https://www.evernote.com/shard/s230/sh/ac134774-530f-4649-b3a2-e46b8d712c78/0352134cc8fab7241d97292f4d6ff464)。

选择您的第一个视图控制器,然后按Ctrl +拖动到MySettingsViewController以在两者之间创建一个segue。单击您在故事板中创建的segue,并使用属性检查器窗口为其指定标识符。您还可以选择此时如何呈现视图控制器;我建议您使用模态。

正如Nikolai所推荐的那样,你的第一个视图控制器的viewDidLoad方法是这个代码的好地方。

我强烈建议观看,例如Paul Hegerty关于iOS开发的iTunes U讲座 - 它涵盖了这些基础知识,例如使用故事板和它们之间的隔离。