这是我在Stackoverflow上的第一篇文章,所以我想说" Hello"。原谅我,我的英文不好:) 我已经在Stackoverflow上阅读了很多线程来解决我的问题,但我是一个彻头彻尾的尝试者,所以我不能让我的应用程序像我想要的那样工作。
如果应用程序是第一次启动,我想呈现动画的模态视图控制器 - 如果不是这样的"介绍视图"不应该显示。
我有Xcode 5 + iOS7模拟器。我在" Main.storyboard"中有两个ViewControllers。文件。其中一个"是初始的View Controller"。
如果该应用首次启动,我找到了做某事的方法,然后将其同步到设置(在#34; AppDelegate.m"文件中):
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
UIColor *tintColor = [UIColor colorWithRed:137/255.0f green:116/255.0f blue:62/255.0f alpha:1.0];
[[UIButton appearance] setTintColor:tintColor];
[[UISegmentedControl appearance] setTintColor:tintColor];
[[UIAlertView appearance]setTintColor:tintColor];
BOOL ranBefore = [[NSUserDefaults standardUserDefaults] boolForKey:@"ranBefore"];
if (!ranBefore) {
//////DISPLAY SECOND (not "is initial view controller") VIEW CONTROLLER HERE\\\\\\
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"ranBefore"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
return YES;
}
我该怎么做?就像我说的,即使是其他帖子的复制粘贴也无法解决我的问题(我是一个乞丐:P)。你能为我做一个有效的Xcode项目并通过我的电子邮件地址发送吗?
答案 0 :(得分:0)
您可以使用一些代码执行此操作,例如我提供的样本。
在使用代码之前,您应该在下面更改。
UIMainStoryboardFile
键。您也可以从Xcode执行此操作:目标 - >常规标签 - >部署信息部分 - >主界面。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
UIColor *tintColor = [UIColor colorWithRed:137/255.0f green:116/255.0f blue:62/255.0f alpha:1.0];
[[UIButton appearance] setTintColor:tintColor];
[[UISegmentedControl appearance] setTintColor:tintColor];
[[UIAlertView appearance]setTintColor:tintColor];
UIStoryboard * myStoryboard = [UIStoryboard storyboardWithName:@"StoryboardName" bundle:nil];
BOOL ranBefore = [[NSUserDefaults standardUserDefaults] boolForKey:@"ranBefore"];
if (!ranBefore)
{
InitialViewController * initialViewController = [myStoryboard instantiateViewControllerWithIdentifier:@"InitialViewControllerIdentifier"];
[self.window setRootViewController:initialViewController];
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"ranBefore"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
else
{
DefaultViewController * defaultViewController = [myStoryboard instantiateInitialViewController];
[self.window setRootViewController:defaultViewController];
}
return YES;
}
P.S:你也可以使用UIStoryboardSegue
来完成呈现工作。您可以在https://developer.apple.com/library/ios/documentation/uikit/reference/UIStoryboardSegue_Class/Reference/Reference.html
编辑:根据评论更新代码和说明。
答案 1 :(得分:0)
您可以进入故事板并选择要在启动应用时首先显示的View Controller。选择所需的视图控制器后,单击属性检查器并向下滚动以找到" 是初始视图控制器"选项并单击它以在启动应用程序时显示该选项。另一种选择是进入故事板,并且会有一个指向视图的箭头。它不会连接任何东西。它将指向一个视图。您可以拖动该箭头并将其放在要首先加载的视图旁边。
答案 2 :(得分:0)
我所要做的就是在故事板文件中创建一个segue(从一个视图到另一个视图),给它一个标识符" goToTutorial"例如,然后在" MainViewController.m" file(这是初始View Controller的类)我必须实现viewDidAppear方法(当我尝试在" viewDidLoad&#34中执行此操作时;我遇到了错误:"警告:尝试显示其视图不在窗口层次结构中! &#34):
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
}
并执行segue(在viewDidAppear旁边):
[self performSegueWithIdentifier:@"goToTutorial" sender:self];
所以它看起来像这样:
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
BOOL ranBefore = [[NSUserDefaults standardUserDefaults] boolForKey:@"ranBefore"];
if (!ranBefore) {
[self performSegueWithIdentifier:@"tutorialView" sender:self];
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"ranBefore"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
}