ParentViewController中添加SubViewController(IOS学习)
我是用的是Container.addSubView的方法。
1. ParentViewController.m的@interface()中添加2个子vc的实例变量,代码如下
@property (nonatomic, strong) EmojiViewController *emojiVC;
@property (nonatomic, strong) ICMsgTypeViewController *msgTypeVC;
2. 重写2个子vc的getter,因为复杂的页面切换逻辑很可能使2个子vc的实例被释放,所以在getter中作检查,并返回。代码如下
- (EmojiViewController *)emojiVC{
if(!_emojiVC){
_emojiVC = [self.storyboard instantiateViewControllerWithIdentifier:@"EmojiViewController"];
}
return _emojiVC;
}
- (ICMsgTypeViewController *)msgTypeVC
{
if(!_msgTypeVC){
_msgTypeVC = [self.storyboard instantiateViewControllerWithIdentifier:@"ICMsgTypeViewController"];
}
return _msgTypeVC;
}
3. storyboard中添加2个子vc,并且设置Class和StoryboardID,用于获取实例

4. ParentViewController.m中添加代码加入子view(我没添加加入页面的相关animation和相对定位,so略丑'XDD)代码如下
- (IBAction)selectEmoji:(UIButton *)sender {
if (self.msgTypeVC.view.window) {
[self.msgTypeVC removeFromParentViewController];
[self.msgTypeVC.view removeFromSuperview];
}
[self addChildViewController:self.emojiVC];
self.emojiVC.view.frame = CGRectMake(, , , );
[self.view addSubview:self.emojiVC.view];
[self.emojiVC didMoveToParentViewController:self];
}
5. 总结,其实可以添加protocal优化这些代码,我是新手,待上手了再传demo,具体参考官方API"Creating Custom Container View Controllers"。
ParentViewController中添加SubViewController(IOS学习)的更多相关文章
- ecplice 中添加JavaFX插件学习
fxml文件使用SceneBuilder打开报错 解决方法:Window-->Preferences-->JavaFX-->browse 路径是可执行的JavaFX Scene Bu ...
- iOS学习之UINavigationController详解与使用(三)ToolBar
1.显示Toolbar 在RootViewController.m的- (void)viewDidLoad方法中添加代码,这样Toobar就显示出来了. [cpp] view plaincopy [ ...
- IOS学习:在工程中添加百度地图SDK
1.将下载下来的sdk中的inc文件夹.mapapi.bundle.libbaidumapapi.a添加到工程中,其中libbaiduapi.a有两个,一个对应模拟器一个对应真机,导入方法如下: 第一 ...
- iOS 学习资料Blog 技术论坛等,不断添加中。。。。
iOS 学习资料整理 http://www.jianshu.com/p/dc81698a873c 中文 iOS/Mac 开发博客列表 https://github.com/tangqiaobo ...
- iOS学习之UINavigationController详解与使用(一)添加UIBarButtonItem
http://blog.csdn.net/totogo2010/article/details/7681879 1.UINavigationController导航控制器如何使用 UINavigati ...
- IOS学习:ios中的数据持久化初级(文件、xml、json、sqlite、CoreData)
IOS学习:ios中的数据持久化初级(文件.xml.json.sqlite.CoreData) 分类: ios开发学习2013-05-30 10:03 2316人阅读 评论(2) 收藏 举报 iOSX ...
- iOS学习——tableview中带编辑功能的cell键盘弹出遮挡和收起问题解决
最近在项目中经常用到UITableView中的cell中带有UITextField或UITextView的情况,然后在这种场景下,当我们点击屏幕较下方的cell进行编辑时,这时候键盘弹出来会出现遮挡待 ...
- iOS学习——(转)iOS中关于通知的使用
在移动端开打过程中,经常会用到通知和推送,例如有短信来了需要通知提示,手机横屏了需要通知提示,插上耳机了需要通知提示等等,我们可以根据这些通知采取对应的动作.iOS系统自身定义了很对通知,但是在开发过 ...
- iOS学习之UITableView中Cell的操作
接着iOS学习之Table View的简单使用 这篇,这里主要讲UITableView 中的Cell的操作,包括标记.移动.删除.插入. 为了简单快捷,直接从原来那篇的代码开始,代码下载地址:http ...
随机推荐
- DatagramSocket总是发送UDP数据后无法接收数据
ref:http://blog.chinaunix.net/uid-20771867-id-3416509.html cmd:telnet localhost 5554 ...
- LeetCode:算法特辑——二分搜索
LeetCode:算法特辑——二分搜索 算法模板——基础 int L =0; int R =arr.length; while(L<R) { int M = (R-L)/2+L; if(arr[ ...
- server.xml笔记
本文总结自: http://www.importnew.com/26156.html 核心元素: 顶层元素: server service 连接器: connector 容器: engine > ...
- Java 9 逆天的十大新特性
在介绍java9之前,我们先来看看java成立到现在的所有版本. 1990年初,最初被命名为Oak: 1995年5月23日,Java语言诞生: 1996年1月,第一个JDK-JDK1.0诞生: 199 ...
- Codeforces 453B Little Pony and Harmony Chest:状压dp【记录转移路径】
题目链接:http://codeforces.com/problemset/problem/453/B 题意: 给你一个长度为n的数列a,让你构造一个长度为n的数列b. 在保证b中任意两数gcd都为1 ...
- 从HTTP请求中获取客户IP地址
/** * 从HTTP请求中获取客户IP地址 * * @param request http请求 * @return 客户IP地址 */ public s ...
- 9 python 数据类型—字典
字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据.python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可 ...
- JVM的性能跳优
首先需要找到需要进行调优的进程. 通过jps -v -l -m 找到我需要调优的进程 其中, -m表示输出传入main方法的参数, -l表示输出的main类或jar包的名字, -v表示传入JVM的参数 ...
- codeforces 86D D. Powerful array(莫队算法)
题目链接: D. Powerful array time limit per test 5 seconds memory limit per test 256 megabytes input stan ...
- 关于android 图片加载优化
android应用对图片处理算是比较频繁的了,尤其是在程序加载大量图片和高分辨率图片时,最容易产生oom异常,下面是个人平时一些省内存加载方法 方法一: public Bitmap decodeFil ...