您的位置:首页 > 移动开发

斯坦福Developing iOS 8 Apps学习笔记(三)

2015-09-12 17:42 225 查看

Controllers whose view is other MVCs

UITabBarController

UISplitViewController

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 UIViewController

it 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 has

var 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,则会先执行父类的,再执行子类的,而不会完全覆盖
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: