[iOS基础控件 - 6.12.2] Modal
以Modal的形式展示控制器
- (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^)(void))completion
关闭当初Modal出来的控制器
- (void)dismissViewControllerAnimated: (BOOL)flag completion: (void (^)(void))completion;
- rootViewController一直都是源控制器
- 系统会自己替换view
- 源控制器中有一个属性指向modal控制器:presentedViewController(所以modal控制器才不会被销毁)
1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
2 // Override point for customization after application launch.
3
4 // 设置window
5 self.window = [[UIWindow alloc] init];
6 self.window.backgroundColor = [UIColor grayColor];
7 self.window.frame = [[UIScreen mainScreen] bounds];
8 [self.window makeKeyAndVisible];
9
10 // 创建一个UIView
11 UIViewController *viewController = [[UIViewController alloc] init];
12 viewController.view.backgroundColor = [UIColor redColor];
13 UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(100, 100, 200, 50)];
14 [button setTitle:@"弹出modal" forState:UIControlStateNormal];
15 [button addTarget:self action:@selector(popToModal) forControlEvents:UIControlEventTouchUpInside];
16
17 [viewController.view addSubview:button];
18 self.window.rootViewController = viewController;
19
20 return YES;
21 }
22
23 - (void) popToModal {
24 UIViewController *viewController = self.window.rootViewController;
25
26 // 再创建一个UIView用来切换
27 UIViewController *modalViewController = [[UIViewController alloc] init];
28 modalViewController.view.backgroundColor = [UIColor blueColor];
29
30 // 创建一个NavigationController来包装
31 UINavigationController *naviController = [[UINavigationController alloc] initWithRootViewController:modalViewController];
32 modalViewController.navigationItem.title = @"蓝色";
33
34 // 切换到navigationController
35 [viewController presentViewController:naviController animated:YES completion:^{
36 NSLog(@"完成modal切换");
37 }];
38 }




1 - (IBAction)goback:(UIBarButtonItem *)sender {
2 // 关闭modal
3 // 1.可以使用自己
4 // [self dismissViewControllerAnimated:YES completion:nil];
5
6 // 2.也可以使用上一层的navigation controller
7 [self.navigationController dismissViewControllerAnimated:YES completion:nil];
8 }
1 /*
2 * 在这里传输数据给modal控制器
3 * 顺传,使用控制器
4 */
5 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
6 // 1.取得modal转向的controller,这里是中间的navigation controller
7 UINavigationController *nvController = (UINavigationController *)segue.destinationViewController;
8
9 // 2.取得modal最终显示的controller, 就是最后的UIViewController
10 GreenViewController *greenController = (GreenViewController *)nvController.topViewController;
11
12 // 3.传输数据
13 greenController.name = @"我就是一个modal窗口";
14 }

[iOS基础控件 - 6.12.2] Modal的更多相关文章
- [iOS基础控件 - 6.12.1] QQ菜单管理 UITabBarController 控制器管理
A.需求 1.类似QQ.微信顶部或者底部的窗口转换导航条 2.给每个页面添加相应内容 B.UITabBarController 1.基本概念: (1)内容高度 iOS7之前内容高度为:屏幕高度 - ...
- [iOS基础控件 - 6.12.3] @property属性 strong weak copy
A.概念 @property 的修饰词 strong: 强指针/强引用(iOS6及之前是retain) weak: 弱智真/弱引用(iOS6及之前是assign) 默认情况所有指针都是强指针 ...
- [iOS基础控件 - 6.12.4] NavigationController vs TabBarController
A.属性 1. Item NavigationController: navigationItem (不需要创建) title rightBarButtonItems/ rightBarButtonI ...
- [iOS基础控件 - 5.5] 代理设计模式 (基于”APP列表"练习)
A.概述 在"[iOS基础控件 - 4.4] APP列表 进一步封装,初见MVC模式”上进一步改进,给“下载”按钮加上效果.功能 1.按钮点击后,显示为“已下载”,并且不 ...
- iOS 基础控件(下)
上篇介绍了UIButton.UILabel.UIImageView和UITextField,这篇就简短一点介绍UIScrollView和UIAlertView. UIScrollView 顾名思义也知 ...
- [iOS基础控件 - 6.11.3] 私人通讯录Demo 控制器的数据传递、存储
A.需求 1.搭建一个"私人通讯录"Demo 2.模拟登陆界面 账号 密码 记住密码开关 自动登陆开关 登陆按钮 3.退出注销 4.增删改查 5.恢复数据(取消修改) 这个代码 ...
- [iOS基础控件 - 6.10.2] PickerView 自定义row内容 国家选择Demo
A.需求 1.自定义一个UIView和xib,包含国家名和国旗显示 2.学习row的重用 B.实现步骤 1.准备plist文件和国旗图片 2.创建模型 // // Flag.h // Co ...
- [iOS基础控件 - 7.0] UIWebView
A.基本使用 1.概念 iOS内置的浏览器控件 Safari浏览器就是通过UIWebView实现的 2.用途:制作简易浏览器 (1)基本请求 创建请求 加载请求 (2)代理监听webView加载, ...
- [iOS基础控件 - 6.9.3] QQ好友列表Demo TableView
A.需求 1.使用plist数据,展示类似QQ好友列表的分组.组内成员显示缩进功能 2.组名使用Header,展示箭头图标.组名.组内人数和上线人数 3.点击组名,伸展.缩回好友组 code so ...
随机推荐
- Android开发之LocationManager和定位
代码: /* * 获取当前的位置,并通过短信发送位置到指定号码 */ public class LocationService extends Service { private LocationMa ...
- [NYIST16]矩形嵌套(DP,最长上升子序列)
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=16 像套娃一样把矩形套起来.先给矩形从小到大排序,然后做最长上升子序列就行 /* ━━━━ ...
- android动画坐标定义
这段时间一直在忙Android的项目,总算抽出点时间休息一下,准备把一些项目用到的Android经验分享一下. 在Android开发过程中,经常会碰到Activity之间的切换效果的问题,下面介绍一下 ...
- MySql和Hibernate中关于cascade的用法
数据库里的cascade的用法,Mysql和Hibernate里面是不相同. 在数据库里,进行增加.修改.删除记录的时候,经常会涉及到父子关系的表. 例如:有省份表和城市表,其中城市表有一个外键pro ...
- Java [Leetcode 125]Valid Palindrome
题目描述: Given a string, determine if it is a palindrome, considering only alphanumeric characters and ...
- 两个简单的python文件,实现删除本地文件夹和mongodb数据库的内容
删除本地文件夹: import os , string , datetime ; str = '/home/niuguoqin/tmp/tomcat/'; b = (datetime.datetime ...
- 【C#学习笔记】获取当前应用程序所在路径及环境变量
转自:http://www.cnblogs.com/netlyf/archive/2011/06/22/2086718.html 一.获取当前文件的路径 string str1=Process.Get ...
- POJ:最长上升子序列
Title: http://poj.org/problem?id=2533 Description A numeric sequence of ai is ordered if a1 < a2 ...
- ffmpeg windows 雪花声解决方法
替换所有文件里的<math.h>为<mathimf.h>即可. 我用ffmpeg-0.6.3版测试时,好像mathimf.h文件和其他文件有冲突,需要修改源码. 和qdm2.c ...
- Spring学习之基本概念
Spring 基本概念 Spring优点: 1.Spring不同于其它的Framework,它要提供的是一种管理你的业务对象的方法. 2.DI有效的降低了耦合度 3.AOP提供了通用任务的集中管理 4 ...