我怎样才能创建一个模态视图,可能来自代理人检查它是否是第一次启动应用程序并显示带有关闭按钮的模态视图,以便通知用户重要的事情?
我需要视图仅在第一次启动应用程序时显示,而不再显示。
答案 0 :(得分:3)
首先:查看我之前的答案:https://stackoverflow.com/a/13563490/1359306
这是我每次打开应用程序时使用的密码保护模式视图。答案应该有助于解决实施解决方案时可能出现的一些问题。它使用performSegueWithIdentifier
,因为我使用的是故事板,但您也可以使用presentViewController:animated:completion:
向您展示视图。
然后:请注意,您可以使用if
语句检查是否需要显示视图。在我的情况下,我检查用户是否已超出应用程序超过5分钟。我这样做是通过每次调用NSUserDefaults
时在applicationWillResignActive
中设置日期 - 并检查它与当前日期/时间之间的差异。
在您的情况下,您可以执行以下操作:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"firsttime"] == nil) {
//display modal view
[defaults setObject:@"YES" forKey:@"firsttime"];
[defaults synchronize];
}
这会检查应用的NSUserDefaults
。如果'firsttime'为nil(首次下载应用程序时),我们将显示该视图。然后我们将键设置为“YES”,这意味着它永远不会再等于nil - 因此视图永远不会显示。
这对于在应用首次加载时显示说明非常有用。或者,您可以存储日期或数字,以使代码在将来更具适应性。
可以找到NSUserDefaults
的文档here。
答案 1 :(得分:1)
您可以使用NSUserDefaults
实现此目的。
在delegate.h文件中
NSString * firstTime;
在.m文件中
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *myStr = [defaults objectForKey:@"str"];
firstTime =myStr;
if (firstTime.length==0) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"hi" message:@"You have open this app first time" delegate:self cancelButtonTitle:@"ok" otherButtonTitles: nil];
[alert show];
[self firstTime];
}
return YES;
}
-(void)firstTime
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *myStr = @"first";
[defaults setObject:myStr forKey:@"str"];
[defaults synchronize];
}
答案 2 :(得分:1)
在AppDelegate
使用方法didFinishLaunchingWithOptions
中检查您的应用是第一次启动还是第二次启动
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"firstTime"])
{
// show your main view controller
}
else
{ // your app is launching first time ....
// show your modalview controller here and dismiss it & go to main view controller
// don't forget to update the key so that next time user don't hang in else statement...
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"firstTime"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
}
答案 3 :(得分:0)
您可以使用UIViewController类中的presentViewController:animated:completion:
。
所以这就是我要做的事情:
没有来源,代码(我的Mac在家里),但是如果你按照这些简单的步骤操作它应该可以正常使用。