从android转到iOS上开发,刚开始很不习惯,总是喜欢用android的想法来用iOS上的控件,结果是到处碰壁,并且是一直碰,现在闲着没事就写点刚开始的一些简单程序,加深下对iOS开发的认识。
1.首先创建一个空的iOS工程(我默认使用了arc机制,所以后面的代码中不会出现释放的代码);工程目录如下
2.修改VSAppDelegate.h,添加一个UINavigationController类型的属性naviController,然后在VSAppDelegate.c中添加上属性的get/set方法的声明,在这个例子中我们只修改用
(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions 方法,其它的方法你可以手动删除掉,用的时候再添加就可以了,下面修改这个方法,将naviController添加到程序中,在这之前你需要先创建一个程序启动时的画面,在这个例子中是VSLoginViewController,原因是在初始化naviController的时候需要用一个ViewController来作为RootViewController,具体实现的代码如下:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
VSLoginViewController *loginView = [[VSLoginViewController alloc]initWithNibName:@"VSLoginViewController" bundle:nil];
self.naviController = [[UINavigationController alloc]initWithRootViewController:loginView];
self.window.rootViewController = self.naviController;
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
启动后的画面如下:
也许你会很奇怪,为什么你的程序会带有一个导航条呢,而我的这个怎么没有的呢,原因很简单,我是在VSLoginViewController的(void) viewWillAppear:(BOOL)animated方法中将导航条隐藏掉了,代码如下:
-(void) viewWillAppear:(BOOL)animated
{
[self.navigationController setNavigationBarHidden:YES animated:YES];
[super viewWillAppear:animated];
}
在做跳转逻辑之前,我们还要做一个设置,就是设置下一个页面中导航条的回退按钮的标题,是的,下一个页面的回退按钮的标题是在本页面设置的,这里有2种方法:1.设置本画面的title属性;2.修改下一个页面的导航条的回退按钮,这个的设置是在ViewController的init方法中实现的,代码如下:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
UIBarButtonItem *backItem=[[UIBarButtonItem alloc]init];
backItem.title=@"注销";
self.navigationItem.backBarButtonItem = backItem;
// self.title = @"注销";
}
return self;
}
3.下面来实现页面的跳转逻辑,首先在VSLoginViewController.h中声明一个方法login,然后将这个方法绑定到xib的按钮上,然后实现login方法,代码如下:
-(void) login:(id)sender
{
VSMainViewController *mainViewController = [[VSMainViewController alloc]initWithNibName:@"VSMainViewController" bundle:nil];
[self.navigationController pushViewController:mainViewController animated:YES];
}
设置完成后点击这个按钮就会跳转到下一个页面了:
导航条有显示回来了,这也是在viewWillAppear方法中设置的,如果不设置则默认是沿用上一个的导航条设置。