我想仅在我的应用首次启动时显示条款和条件。
目前我正在didFinishLaunchingWithOptions
编写代码。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Handle launching from a notification
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"HasLaunchedOnce"])
{
NSLog(@"Already Run");
}
else
{
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"HasLaunchedOnce"];
[[NSUserDefaults standardUserDefaults] synchronize];
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];
FirstPage * termsView = [storyboard instantiateViewControllerWithIdentifier:@"FirstPage"];
UINavigationController *navController=[[UINavigationController alloc]initWithRootViewController:termsView];
self.window.rootViewController=navController;
// This is the first launch ever
}
}
UPDATE ::
当我的应用程序第一次在TERMSandCONDITIONSVC
中启动时,我想要一个Accept
按钮。当用户Accepts
凝聚时,只有他允许进一步。
以上代码的问题:
当我第一次运行我的应用程序TermsandCondition
向我显示时。我按下主页按钮应用程序进入后台。再次打开来自启动器的应用程序,TermsandCondtion
显示。
但是,当我将我的应用程序置于背景中时,通过双击主页按钮将其从背景中删除并运行应用程序,我将直接转移到我的主屏幕。
没有条款和条件。
我如何从中恢复。
答案 0 :(得分:1)
您将获得黑屏,因为没有将viewcontroller设置为root视图。
做一件事也将其他部分写入 IF 部分,并将控制器从术语页面更改为第二页。
尝试将下面的代码放在didFinishLaunch中并检查。
datum_poruchy
^datum_poruchy
更新: 只需拖动以下行即可同意按钮的点击事件,并从didFinishlaunching中删除这一行。
self.window = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds];
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UINavigationController *navController
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"HasLaunchedOnce"])
{
NSLog(@"Already Run");
SecondView *secondView = [storyboard instantiateViewControllerWithIdentifier:<storyboard id>];
navController=[[UINavigationController alloc]initWithRootViewController:secondView];
}
else
{
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"HasLaunchedOnce"];
[[NSUserDefaults standardUserDefaults] synchronize];
TermsView *termsView = [storyboard instantiateViewControllerWithIdentifier:<storyboard id>];
navController=[[UINavigationController alloc]initWithRootViewController:termsView];
// This is the first launch ever
}
}
self.window.rootViewController=navController;
return YES;
答案 1 :(得分:1)
您正以错误的方式实例化termsView
。在您的故事板中为FirstPage
视图控制器指定一个FirstPage
的storyboardID。
然后在didFinishLaunchingWithOptions
执行以下操作
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];
FirstPage * termsView = [storyboard instantiateViewControllerWithIdentifier:@"FirstPage"];
这将找到您的主故事板,然后根据提供的storyboardID(即termsView
)使用ViewController实例化FirstPage
。
答案 2 :(得分:1)
如果您想首次启动iOS应用程序。使用此代码,条款和条件将仅在应用程序首次启动时显示或显示。
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"HasLaunchedOnce"])
{
NSLog(@"Already Run");
}
else
{
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"HasLaunchedOnce"];
[[NSUserDefaults standardUserDefaults] synchronize];
FirstPage *termsView = [[FirstPage alloc]init];
UINavigationController *navController=[[UINavigationController alloc]initWithRootViewController:termsView];
self.window.rootViewController=navController;
// This is the first launch ever
UIStoryboard *story=[UIStoryboard storyboardWithName:@"Main" bundle:nil];
//first goto storyboard and give storyboard id "TermsConditionVC" to TermsConditionVC
TermsConditionVC *firstVC = [story instantiateViewControllerWithIdentifier:@"TermsConditionVC"];
self.window.rootViewController =firstVC;
}
完整文章和完整流程设置您的第一个计时器iOS应用程序启动访问以下链接
http://findnerd.com/list/view/How-to-setup-first-time-launch-of-an-iOS-App/2770/