这几天用vmware虚拟了个macos10.12系统,用于学习xcode的原生开发。
花了一天多时间安装系统和配置开发环境,主要是下载包都比较大,动辄下载两三个小时。VMware用的版本是12,MacOs镜像是10.12,在此配置下xcode最低要8.0版本,一开始下载的6,在这花了半天时间,总体还算顺利。
虽然objectc的语法比较怪异,还是比较容易学的,基本看个个把小时就能上手。就是如何打开新页面一时把我搞晕了,在android里这非常简单,一个startActivity就搞定了,xcode的打开新页面却有好几种方式。记录一下以免以后忘了:
打开xib方式,这是早期的xcode打开新页面的方式,跟Android上基本一样,也是最容易理解和使用的方式。每个xib相当于xml布局页面, 跟相应的view controlller挂钩。
故事板里打开页面方式。把所有的页面,挪到故事板里,可通过简单连线,控制打开新页面。这种方式看似省事了,但是实际开发中,一个app有几十个页面是很常见的,不可想象几十个布局集中到一个故事板里是什么的画面,我个人不太认可这种方式。何况,需要传叁的时候,还是要写一推代码,源控制器里用prepareForSegue方法,目标控制器里要声明相应的属性,不直观。
多故事板方式。用打开故事板的方式,打开新页面,首页面的控制器要勾选initial。
打开一个白板viewcontroller,控制器没有和布局挂钩。可用代码写页面。
modal方式和push方式。其实手机里面都是modal方式,跟windows不一样。手机里打开新页面默认是占满屏的,不关闭当前页面,无法手指操作被遮挡的页面。苹果页面基本都是从底部上来的,说明大家都用的modal。如果用Push方式,页面会像安卓一样,从右边出来。push方式需要配置navigationcontroller。
在AppDelegate的application方法里:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//只有在用push方式导航的时候,这个才有用。默认为modal方式
UIViewController *view=[[UIStoryboard storyboardWithName:@"Main" bundle: [NSBundle mainBundle]] instantiateInitialViewController];
UINavigationController *na=[UINavigationController new];
[na setNavigationBarHidden:true];
self.window.rootViewController=[na initWithRootViewController:view];
return YES;
}