如果想让一个APP加上引导页面是一个非常完美的举动

但是,总会遇到一些问题

(不要忘记在APDelegate里面加上用户引导页面的头文件和程序启动时的第一个页面哦)

情况一:纯代码

判断是否是第一次启动应用程序

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen] bounds]] ;
if(![[NSUserDefaults standardUserDefaults] boolForKey:@"firstLaunch"])
{
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"firstLaunch"];
NSLog(@"第一次启动");
//如果是第一次启动的话,使用UserGuideViewController (用户引导页面) 作为根视图
UserGuideViewController *userGuideViewController = [[UserGuideViewController alloc] init];
self.window.rootViewController = userGuideViewController;
}
else
{
NSLog(@"不是第一次启动");
TranslateController *tranVC = [[TranslateController alloc] init];
self.window.rootViewController = tranVC;
}
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}

情况二:使用storyboard

情况基本相同,不同的是

  NSLog(@"不是第一次启动");
UIStoryboard *story = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController * vc = [story instantiateViewControllerWithIdentifier:@"TranslateController"];
self.window.rootViewController = vc;

解释一下原理先,如果使用纯代码的话,不是第一次启动应用程序的时候会自动执行下面的代码,所以不会有问题

如果使用storyboard的话,初始化第一个视图控制器(程序第一个界面),什么都没有,(除非你自己使用代码添加控件),而且storyboard在启动的时候并不是从这里开始的,而是默认storyboard的第一个视图控制器,所以,加上一个标志就好

这样它就能找到应该启动的界面

最新文章

  1. js字符串格式化扩展方法
  2. sequelize常见操作使用方法
  3. SVN:服务器资源删掉,本地添加时和删掉的名字同名出现One or more files are in a conflicted state.
  4. css2 [lang|=en] 误区
  5. [Weblogic]startWebLogic.cmd配置JAVA_OPTIONS无效的解决思路与方案
  6. (medium)LeetCode 207.Course Schedule
  7. Python的类变量和对象变量声明解析
  8. 关于 " +new Date " 的个人见解
  9. css 兼容小三角
  10. SSAS-时间维度的标准设计
  11. android 之Fragment(官网资料翻译)
  12. 原生JavaScript实现焦点图轮播
  13. 腾讯的h5制作工具教程
  14. 重新学习Servlet二
  15. Nginx相关笔记
  16. nodejs做的一个测试端口程序
  17. base大家族详解
  18. while(std::cin>>val)怎么结束的思考
  19. Java开发环境的搭建(jdk,eclipse)
  20. BZOJ 4326: NOIP2015 运输计划(二分,树上差分)

热门文章

  1. Hadoop初步认识
  2. 如何在VS2010中使用Async功能?
  3. Git教程(6)常用技巧之远程分支简单示例
  4. 【HDOJ】4351 Digital root
  5. UNICODE,GBK,UTF-8区别
  6. BZOJ2500: 幸福的道路
  7. Vs 引用第三方DLL文件 版本不一致问题 (npoi与memcached中的ICSharpCode.SharpZipLib版本冲突的解决方案)
  8. T-SQL查询进阶—理解SQL Server中的锁
  9. 中文Win7下成功安装calabash-android步骤
  10. 在FOR中使用close window,循环次数大于1就会报异常