1

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

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

如何在我的两个 ViewController 之间进行选择?

谢谢。

4

3 回答 3

1

我认为最好的方法是使用用户默认值——注册一个默认值,比如 setBool:TRUE forKey:@"NeverOpened",然后检查该值。如果是真的,让你的主视图控制器模态地显示设置控制器,然后当它被关闭时,将“NeverOpened”键的值设置为假。下次打开应用程序时,NeverOpened 将为 false,并且不会显示设置控制器。

于 2012-10-05T00:10:38.230 回答
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,并使用属性检查器窗口为其指定一个标识符。此时您还可以选择您希望如何呈现视图控制器;我推荐 modal 用于您的目的。

正如 Nikolai 建议的那样,您的第一个视图控制器的 viewDidLoad 方法是此代码的好地方。

我强烈推荐观看例如 Paul Hegerty 的 iTunes U 讲座关于 iOS 开发——它涵盖了这些基础知识,例如使用故事板和在它们之间进行切换。

于 2012-10-05T05:57:29.520 回答
0

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

于 2012-10-05T00:10:06.600 回答