不看后悔的:iOS开发系列--视图切换(4)

在iOS开发中视图的切换是很频繁的,独立的视图应用在实际开发过程中并不常见,除非你的应用足够简单。在iOS开发中常用的视图切换有三种,今天我们将一一介绍:UITabBarController,UINavigation,Controller模态窗口

AD:2014WOT全球软件技术峰会北京站 课程视频发布

模态窗口只是视图控制器显示的一种方式(在iOS中并没有专门的模态窗口类),模态窗口不依赖于控制器容器(例如前两种视图切换一个依赖于 UITabBarController,另一个依赖于UINavigationController),通常用于显示独立的内容,在模态窗口显示的时其他 视图的内容无法进行操作。

模态窗口使用起来比较容易,一般的视图控制器只要调用- (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^)(void))completion NS_AVAILABLE_IOS(5_0);方法那么参数中的视图控制器就会以模态窗口的形式展现,同时调用- (void)dismissViewControllerAnimated: (BOOL)flag completion: (void (^)(void))completion NS_AVAILABLE_IOS(5_0);方法就会关闭模态窗口。

下面的示例中演示了一个登录操作,点击主界面左上方登录按钮以模态窗口的形式展现登录界面,用户点击登录界面中的登录按钮就会返回到主界面。特别强 调一点在下面的示例中导航栏是手动创建的,而不是采用UINavigationController,为了帮助大家熟悉导航栏使用同时也了解了 UInavigationController中导航栏的本质。

1.首先创建一个登录界面,在界面中只有两个输入框和一个登录按钮

   
   
  1. // 
  2. //  KCLoginViewController.m 
  3. //  ViewTransition 
  4. // 
  5. //  Created by Kenshin Cui on 14-3-15. 
  6. //  Copyright (c) 2014年 Kenshin Cui. All rights reserved. 
  7. // 
  8.  
  9. #import "KCLoginViewController.h" 
  10.  
  11. @interface KCLoginViewController () 
  12.  
  13. @end 
  14.  
  15. @implementation KCLoginViewController 
  16.  
  17. - (void)viewDidLoad { 
  18.     [super viewDidLoad]; 
  19.      
  20.     [self addLoginForm]; 
  21.  
  22. -(void)addLoginForm{ 
  23.     //用户名 
  24.     UILabel *lbUserName=[[UILabel alloc]initWithFrame:CGRectMake(5015010030)]; 
  25.     lbUserName.text=@"用户名:"
  26.     [self.view addSubview:lbUserName]; 
  27.      
  28.     UITextField *txtUserName=[[UITextField alloc]initWithFrame:CGRectMake(12015015030)]; 
  29.     txtUserName.borderStyle=UITextBorderStyleRoundedRect; 
  30.     [self.view addSubview:txtUserName]; 
  31.      
  32.     //密码 
  33.     UILabel *lbPassword=[[UILabel alloc]initWithFrame:CGRectMake(5020010030)]; 
  34.     lbPassword.text=@"密码:"
  35.     [self.view addSubview:lbPassword]; 
  36.      
  37.     UITextField *txtPassword=[[UITextField alloc]initWithFrame:CGRectMake(12020015030)]; 
  38.     txtPassword.secureTextEntry=YES; 
  39.     txtPassword.borderStyle=UITextBorderStyleRoundedRect; 
  40.     [self.view addSubview:txtPassword]; 
  41.      
  42.     //登录按钮 
  43.     UIButton *btnLogin=[UIButton buttonWithType:UIButtonTypeSystem]; 
  44.     btnLogin.frame=CGRectMake(1202708030); 
  45.     [btnLogin setTitle:@"登录" forState:UIControlStateNormal]; 
  46.     [self.view addSubview:btnLogin]; 
  47.     [btnLogin addTarget:self action:@selector(login) forControlEvents:UIControlEventTouchUpInside]; 
  48.  
  49. #pragma mark 登录操作 
  50. -(void)login{ 
  51.     [self dismissViewControllerAnimated:YES completion:nil]; 
  52.  
  53.  
  54. @end 

2.定义主界面视图控制器KCMainViewController,在左上角放一个登录按钮用于弹出登录界面

   
   
  1. // 
  2. //  KCMainViewController.m 
  3. //  ViewTransition 
  4. // 
  5. //  Created by Kenshin Cui on 14-3-15. 
  6. //  Copyright (c) 2014年 Kenshin Cui. All rights reserved. 
  7. // 
  8.  
  9. #import "KCMainViewController.h" 
  10. #import "KCLoginViewController.h" 
  11.  
  12. @interface KCMainViewController () 
  13.  
  14. @end 
  15.  
  16. @implementation KCMainViewController 
  17.  
  18. - (void)viewDidLoad { 
  19.     [super viewDidLoad]; 
  20.      
  21.     [self addNavigationBar]; 
  22.  
  23.  
  24. #pragma mark 添加导航栏 
  25. -(void)addNavigationBar{ 
  26.     //创建一个导航栏 
  27.     UINavigationBar *navigationBar=[[UINavigationBar alloc]initWithFrame:CGRectMake(0032044+20)]; 
  28.     //navigationBar.tintColor=[UIColor whiteColor]; 
  29.     [self.view addSubview:navigationBar]; 
  30.     //创建导航控件内容 
  31.     UINavigationItem *navigationItem=[[UINavigationItem alloc]initWithTitle:@"Web Chat"]; 
  32.      
  33.     //左侧添加登录按钮 
  34.     UIBarButtonItem *loginButton=[[UIBarButtonItem alloc]initWithTitle:@"登录" style:UIBarButtonItemStyleDone target:self action:@selector(login)]; 
  35.      
  36.     navigationItem.leftBarButtonItem=loginButton; 
  37.      
  38.     //添加内容到导航栏 
  39.     [navigationBar pushNavigationItem:navigationItem animated:NO]; 
  40.  
  41. #pragma mark 登录操作 
  42. -(void)login{ 
  43.     KCLoginViewController *loginController=[[KCLoginViewController alloc]init]; 
  44.     //调用此方法显示模态窗口 
  45.     [self presentViewController:loginController animated:YES completion:nil]; 
  46. @end 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值