Tweetbot和Clear show在应用程序的第一次启动时,一个小教程屏幕应用程序如何工作。只有第一次启动应用程序时才弹出带有小教程的屏幕(1次)
我如何以及如何做出类似的事情?任何人都可以把我推向正确的方向吗?
查看我的意思是:
答案 0 :(得分:53)
我假设Xcode你实际上是指iOS。
您需要做的是使用NSUserDefaults
类来存储一个标志,指示用户之前是否已经看过教程屏幕。
当您的应用首次加载时(或者您想决定是否显示教程屏幕时),请执行以下操作:
if(![[NSUserDefaults standardUserDefaults] boolForKey:@"hasSeenTutorial"])
[self displayTutorial];
这将为当前用户检查已保存的NSUserDefaults,以获取名为“hasSeenTutorial”的值,该值尚不存在。由于它不存在,它将调用displayTutorial
。 displayTutorial
指的是创建教程视图的方法。你可以找出那个部分。
然后,一旦用户关闭教程屏幕:
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"hasSeenTutorial"];
该值将保存为您的用户个人资料,这意味着下次检查时,这将是真的,因此不会调用displayTutorial
。
答案 1 :(得分:33)
在viewDidLoad中:
if (![@"1" isEqualToString:[[NSUserDefaults standardUserDefaults]
objectForKey:@"aValue"]]) {
[[NSUserDefaults standardUserDefaults] setValue:@"1" forKey:@"aValue"];
[[NSUserDefaults standardUserDefaults] synchronize];
//Action here
}
答案 2 :(得分:9)
当然,如果我们想在更新后告诉用户有关功能的信息(不仅是第一次推出的应用),下面的解决方案也可能适用。
在viewDidLoad中:
NSString *currentBundleVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];
NSString *previousBundleVersion = [[NSUserDefaults standardUserDefaults] objectForKey:@"PreviousBundleVersion"];
if (![currentBundleVersion isEqualToString:previousBundleVersion] ) {
// Here you can initialize your introduction view and present it!
}
用户关闭简介后:
NSString *currentBundleVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];
NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
if (standardUserDefaults) {
[standardUserDefaults setObject:currentBundleVersion forKey:@"PreviousBundleVersion"];
[standardUserDefaults synchronize];
}
在这种情况下,存储在standardUserDefaults中的应用包版本将仅在更新后与当前包版本不同,并且仅在首次启动时显示一次。
答案 3 :(得分:3)
使用BOOL初始化您的用户默认值,称为instructionsSeen
(或任何您想要的),并在App委托的初始化方法中将其设置为NO
。在您的应用中,测试此值,如果它是NO
显示您的教程屏幕。在显示和显示此屏幕时,请将instructionsSeen
设置为YES
并将其存储为默认值。
这样,演示屏幕只会在首次启动时显示,除非用户再次卸载并安装应用程序。
您还可以显示少量发布的演示(例如3)。在这种情况下,请不要使用BOOL
使用数字而是将其递增。
答案 4 :(得分:2)
AppDelegate中的Xamarin.iOS版本:
a
在我的StartPageViewController中,我有一个按钮,它将NSUserDefaults设置为true,因此下次运行时,它将从NonStartPageViewController开始:
Num
答案 5 :(得分:1)
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if (![defaults objectForKey:@"firstRun"]) {
[defaults setObject:[NSDate date] forKey:@"firstRun"];
[self displayTutorial];
}
答案 6 :(得分:0)
Swift版本:
if !(NSUserDefaults.standardUserDefaults().boolForKey("seenTutorial")) {
//Tutorial part
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "seenTutorial")
}
答案 7 :(得分:0)
每个人都在使这个变得更加复杂和虚张声势......简单完整的解决方案。
在ViewDidLoad中:
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"FirstLoadKey"]) {
self.imageView.hidden = YES;
}else{
self.imageView.hidden = NO;
[[NSUserDefaults standardUserDefaults]setBool:YES forKey:@"FirstLoadKey"];
[[NSUserDefaults standardUserDefaults]synchronize];
}