斯坦福Developing iOS 8 Apps学习笔记(三)
2015-09-12 17:42
225 查看
Controllers whose view is other MVCs
UITabBarControllerUISplitViewController
UINavigationController
获得其中的ViewController
这些Controller都可以通过var viewControllers:[UIViewControllers]{get, set}
来获取里面的ViewControllers
其中
- UITabBarController看有几个TabItem
- SplitViewController有2个
- NavigationController看Stack中有几个
获得ViewController所在的母控制器
里面的ViewController可以通过var tabBarController:UITabBarController?{get} var splitViewController:UISplitViewController?{get} var navigationController:UINavigationController?{get}
来获得这些ViewController
Segues
4种segue
show segue(will push in Navigation Controller, else modal)show detail segue(will show in detail of split view or push in Navi)
modal segue(take over the entire screen)
popover segue(appear in a little popover window)
ways to segue
performSegueWithIdentifier(identifier:String, sender:Anyobject?)prepareForSegue(segue:UIStoryboardSegue, sender:Anyobject?)
shouldPerformSegueWithIdentifier(identifier:String)
其中segue中比较重要的是:
- segue.identifier
- segue.destinationViewController
注意:此时destinationViewController的outlet还没有初始化
popover
popover is not a UIViewControllerit is UIPopoverPresentationController
uses segue too
All segue are managed via a UIPresentationController
prepareForSegue(segue, sender){ if let identifier = segue.identifier { switch identifier { case "popover": if let vc = segue.destinationViewController as? myController { if let ppc = vc.popoverPresentationController { ppc.permittedArrowDirection = UIPopoverArrowDirection.Any ppc.delegate = self } } } } }
popover在iPhone上的适应方法
当popover在iPhone中出现时,默认会使用Modal的弹出方式,但也可以改变,使用如下方法func adaptivePresentationStyleForPresentationController(UIPresentationController) -> UIModalPresentationStyle { return UIModalPresentationStyle.None //显示和iPad一样,default is .FullScreen }
或者通过下列方式来modal显示一个定制化的VC
fun presentationController(UIPresentationController,viewControllerForAdaptivePresentationStyle:UIModalPresentationStyle) -> UIViewController { }
Important: Popover Size
the MVC inside popoverViewController hasvar preferredContentSize: CGSize
虽然这样不能够保证,但是iOS会尽量
override var preferredContentSize:CGSize { get { if textView != nil && presentingViewController!= nil { return textView.sizeThatFits(presentingViewController!.view.bounds.size) } else { return super.preferredContentSize } } set { super.perferredContentSize = newValue } }
Others
如果重写了父类的property observer,则会先执行父类的,再执行子类的,而不会完全覆盖相关文章推荐
- 【cocos2dx】成员精灵(组合)的getboundingbox问题
- 通过Fragment + Viewpager+Gridview实现Android Tab切换菜单
- <Chapter 2>2-2-2.开发Java应用(Developing a Java App)
- Unity5 新功能解析--物理渲染与standard shader
- Android中SQLite应用详解
- ios 类似android的toast
- 蓝懿iOS培训日志10 个人随笔(部分总结)
- cocos2dx环境和相关命令
- Android 数据存数---SQLite数据库
- Android实战简易教程-第五十七枪(分享小米手电筒源码)
- iOS7系统iLEX RAT冬青鼠安装教程:无需刷机还原纯净越狱系统
- ios开发中MVC详解
- ios系统 越狱系统还原[平刷]
- iGrimace iOS应用闪退或图标消失的解决办法
- opencv在ios上的开发教程
- iGriamceV8.0 IG8.0.0 iOS8 V8基本设置和使用教程图
- cocos2d-x 源代码 :可以循环CCScrollView (,代码已被重构连接使用)
- 2016最新Android安卓短信拦截(过Android4.4和Android5.0和Android5.1)源码
- 2015年9月9日The Swift Programming Language更新内容
- ios中调用相机,相册,选择多张图片