IOS基础学习笔记四:控制器切换、赋值
2015-05-15 15:05
555 查看
一、Modal
Modal方式一:代码1.打开模态控制器
[self presentViewController:login animated:YES completion:^{NSLog(@"弹出完毕");}];
2.关闭模态控制器
[self dismissViewControllerAnimated:YES completion:nil];
Modal方式二:storyboard
在storyboard中托出两个ViewController:ViewController 和 NextViewController
按住CTRL 点击ViewController 中的button 指向 NextViewController,在弹出中选择Modal
------------、控制器之间传值----------------
传值方式一:直接复杂,缺点 耦合性太高
例子说明:在Modal,取呈现的控制器(presentingViewController)对象直接赋值- (IBAction)loginToMain:(id)sender { // 1.取出用户名,并传回上一个控制器 NSString *text = self.username.text; ViewController *back =(ViewController *)self.presentingViewController; back.userName.text=text; //[self.delegate loginSuccess:text]; // 2.关闭当前控制器 [self dismissViewControllerAnimated:YES completion:nil]; }
传值方式二: 代理 说明:ViewController作为代理,LoginViewController中定义代理
步骤一:LoginViewController.h中定义协议@protocol LoginViewControllerDelegate; @interface LoginViewController : UIViewController @property (weak, nonatomic) IBOutlet UITextField *username; - (IBAction)back:(id)sender; - (IBAction)loginToMain:(id)sender; // 代理用weak @property (nonatomic, weak) id<LoginViewControllerDelegate> delegate; @end @protocol LoginViewControllerDelegate <NSObject> - (void)loginSuccess:(NSString *)usernameText; @end
并且 LoginViewController.m 登录IBAction 用到 [self.delegateloginSuccess:text];
步骤二:ViewController.h继承协议
@protocol LoginViewControllerDelegate; @interface ViewController : UIViewController<LoginViewControllerDelegate> @end
步骤三:ViewController.m chu 绑定代理,并实现接受消息方法loginSucess
// 初始化控制器 LoginViewController *login = [[LoginViewController alloc] init]; login.delegate = self; // 弹出登录界面 [self presentViewController:login animated:YES completion:^{ NSLog(@"弹出完毕"); }];
#pragma mark LoginViewControllerDelegate方法 - (void)loginSuccess:(NSString *)usernameText { // NSLog(@"%@",usernameText); self.userName.text=usernameText; }步骤四:LoginViewController.m 触发代理方法
[self.delegateloginSuccess:text];
二、push 用到导航控制器UINavigationController 类似 棧
方式一 代码:
MJAppDelegate.m中 创建导航控制器,并设置MJViewController为第一个控制器- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // Override point for customization after application launch. self.viewController = [[MJViewController alloc] initWithNibName:@"MJViewController" bundle:nil]; // 创建导航控制器(并且设置MJViewController是第一个子控制器) UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:self.viewController]; //NSLog(@"nav=%@", nav); self.window.rootViewController = nav; [self.window makeKeyAndVisible]; return YES; }
导航控制器掌握:
1.创建导航控制器
[[UINavigationController alloc] initWithRootViewController:self.viewController];
2.栈(栈中所有的子控制器)
self.navigationController.viewControllers;
3.将控制器压入栈中
[self.navigationController pushViewController:second animated:YES];
4.将控制器从栈中弹出
1> 将栈顶控制器弹出
[self.navigationController popViewControllerAnimated:YES];
2> 回到栈底控制器(根控制器)
[self.navigationController popToRootViewControllerAnimated:YES];
3> 回到具体某一个控制器
[self.navigationController popToViewController:<#(UIViewController *)#> animated:<#(BOOL)#>];
5.导航栏显示的内容
1> 栈顶控制器的navigationItem属性决定了导航栏上面显示的东西
2> 导航栏左边的返回键,是由上一个控制器决定
6.栈顶控制器
self.navigationController.topViewController
// 栈顶控制器的navigationItem属性决定了导航栏上面显示的东西 // 导航栏左边的返回键,是由上一个控制器决定 self.navigationItem.title = @"MJViewController"; self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:nil action:nil]; // 设置下一个界面的返回按钮 self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"返回" style:UIBarButtonItemStyleDone target:nil action:nil];
方式二 :storyboard
// 跳到下一个控制器 (执行对应的线):VIew 对 View拖,push的线;“ogin_success”对于线的identifier[selfperformSegueWithIdentifier:@"login_success"sender:nil];
在执行segue之前会调用一个方法
#pragma mark 执行segue之前会先调用一下这个方法 // 可以给下一个控制器传递数据 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { //segue.sourceViewController; // 来源控制器 //segue.destinationViewController; // 目的控制器 NSLog(@"%@", segue.sourceViewController); NSLog(@"%@", segue.destinationViewController); }
二、UITabBarController
1.UITabbarController的所有子控制器:viewControllers2.UITabbarController可以设置delegate,监听切换过程
3.每个标签显示的内容由当前子控制器的tabbarItem属性决定
self.tabBarItem.title = @"MJView"; // 文字
self.tabBarItem.badgeValue = @"5"; // 红色数字
self.tabBarItem.image // 图片
相关文章推荐
- ios学习笔记:控制器的切换
- IOS开发基础教程学习笔记3 使用Tab Bar切换视图
- iOS开发基础学习笔记——导航控制器2->导航栏(UINavigationBar)/工具栏(toolBar)/导航元素按钮(UINavigationItem)
- 黑马程序员-ios学习笔记 C语言基础语法
- Python 基础学习笔记6- 多变量赋值
- Python学习笔记:02 基础:变量、整数、字符串、赋值、基本输出、注释、代码块
- iOS学习笔记(七)——UI基础UIButton
- IOS学习笔记 运用Quartz 2D框架绘图理论基础(1)
- 个人IOS学习笔记(基础)
- iOS学习笔记41-Swift(一)基础部分
- iOS学习笔记-133.RunLoop01——基础知识
- 黑马程序员-IOS学习笔记-C语言基础复杂数据类型
- IOS开发学习笔记(导航控制器,视图控制器,模态)
- [转]ASP.Net MVC开发基础学习笔记(3):Razor视图引擎、控制器与路由机制学习
- ios学习笔记(六)视图控制器
- IOS 学习笔记 2015-04-15 控制器数据反向传值
- iOS学习笔记(2) - Objective-C基础
- iOS学习笔记 (9) UITabBarController分栏控制器
- iOS学习笔记12--纯代码实现原生UITabBarController,手势滑动切换视图
- UI基础:视图控制器.屏幕旋转.MVC 分类: iOS学习-UI 2015-07-02 22:21 62人阅读 评论(0) 收藏