UIViewController类详解:
通过Nib文件初始化
- init(nibNamenibName:String?,bundlenibBundle:NSBundle?)
- println("nibName=(self.nibName)")
- println("nibBundle=(self.nibBundle)")
StoryBoard相关
copy
println("storyboard=(self.storyboard)")
- overridefuncshouldPerformSegueWithIdentifier(identifier:String?,sender:AnyObject?)->Bool{
- returntrue
- }
-
- overridefuncprepareForSegue(segue:UIStoryboardSegue,0); background-color:inherit">sender:AnyObject?){
- print("prepareForSegue")
- //根据UIStoryBoarSegue的Identifier进行跳转
- overridefuncperformSegueWithIdentifier(identifier:String?,153); font-weight:bold; background-color:inherit">super.performSegueWithIdentifier(identifier!,sender:sender)
- }
//subViewController是否能够执行UnwindSegue
- overridefunccanPerformUnwindSegueAction(action:Selector,0); background-color:inherit">fromViewController:UIViewController,withSendersender:AnyObject)->Bool{
- }
//如果执行UnwindSegue,就返回Segue
- overridefuncsegueForUnwindingToViewController(toViewController:UIViewController,0); background-color:inherit">identifier:String?)->UIStoryboardSegue{
- copy
//能够执行Segue的Controller
- funcviewControllerForUnwindSegueAction(action:Selector,0); background-color:inherit">sender:AnyObject?)->UIViewController?{
- }
Unwindsegue的实现原理请参考相关文章
View相关
copy
println("view=(view)")
- println("viewisloaded=(isViewLoaded())")
- title="ViewController"<prename="code"class="objc">
- super.loadView()<prename="code"class="objc">}
overridefuncviewDidLoad(){
super.viewDidLoad()<spanstyle="font-family:Arial,sans-serif;">
- }<prename="code"class="objc">overridefuncviewWillAppear(animated:Bool){
- super.viewWillAppear(animated)
-
-
- overridefuncviewDidAppear(animated:Bool){
- super.viewDidAppear(animated)
- }
-
- //view被遮挡或者隐藏时调用
- overridefuncviewWillDisappear(animated:Bool){
- super.viewWillDisappear(animated)
- //view被遮挡或者隐藏后调用
- overridefuncviewDidDisappear(animated:Bool){
- super.viewDidDisappear(animated)
- 模式跳转
copy
//设置模式跳转的类别,但是必须是目的Controller设置,不能是上级设置
- //CoverVertical,FlipHorizontal,CrossDissolve,PartialCurl四种类型
- viewController.modalTransitionStyle=.FlipHorizontal
- //设置模式展示样式,适合于iPad上
- viewController.modalPresentationStyle=.FullScreen
- //如果展示不是.FullScreen,那么设置是不是捕获statusBar的样式,适合iPad
- viewController.modalPresentationCapturesStatusBarAppearance=//判断在模式跳转时消失是否键盘
- viewController.disablesAutomaticKeyboardDismissal()
- presentViewController(viewController,0); background-color:inherit">animated:true){()->Voidin
- //跳转到下个界面
- dismissViewControllerAnimated(true,0); background-color:inherit">completion:{()->Voidin
- //回复模式跳转
- })
配置View的layout
//layoutSubviews方法调用之前
- overridefuncviewWillLayoutSubviews(){
- super.viewWillLayoutSubviews()
- //layoutSubviews方法调用之后
- overridefuncviewDidLayoutSubviews(){
- super.viewDidLayoutSubviews()
- class="objc">
updateViewConstraints()
//延伸的方向--setwhichsidesofyourviewcanbeextendedtocoverthewholescreen.
- ifself.respondsToSelector(Selector("edgesForExtendedLayout")){
- self.edgesForExtendedLayout=.None
- //Scrollview滚动时处于全屏,默认YES
- self.respondsToSelector(Selector("automaticallyAdjustsScrollViewInsets")){
- self.automaticallyAdjustsScrollViewInsets=//当statusbar是透明时,是否扩展至StatusBar,默认情况下是NO,且statusbar不是透明的
- self.respondsToSelector(Selector("extendedLayoutIncludesOpaqueBars")){
- self.extendedLayoutIncludesOpaqueBars=false
- //控制view的大小UIPopoverController用的比较的广泛
- self.preferredContentSize=self.view.bounds.size
跳转相关
isBeingPresented()
- isBeingDismissed()
- isMovingToParentViewController()
- isMovingFromParentViewController()
旋转相关
copy
//是否需要旋转
- overridefuncshouldAutorotate()->Bool{
- //支持的方向
- overridefuncsupportedInterfaceOrientations()->Int{
- return2
- //优先支持的方向
- overridefuncpreferredInterfaceOrientationForPresentation()->UIInterfaceOrientation{
- return.Portrait
- }
自定义的ViewController Container
copy
//https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomContainerViewControllers/CreatingCustomContainerViewControllers.html
- //addChildVIewController:调用这个方法指明一个视图控制器作为你的子视图。
- funcaddChildViewController(childController:UIViewController){
- //调用这个方法将一个视图控制器从你的子视图列表里移除。
- funcremoveFromParentViewController(){
- //这是一个使用一个唯一可选的视图替换另一个视图的新方法,或者移动一个子视图到前台来。通过使用这个方法,这个视图控制器的生命周期信息会被正确地发送出去functransitionFromViewController(fromViewController:UIViewController,toViewController:UIViewController,duration:NSTimeInterval,options:UIViewAnimationOptions,animations:()->Void,completion:((Bool)->Void)?){
- //将要移到父Controller
- funcwillMoveToParentViewController(parent:UIViewController?){
- //已经移到父Controller
- funcdidMoveToParentViewController(parent:UIViewController?){
- //触发子ViewController的viewWillAppear
- funcbeginAppearanceTransition(isAppearing:Bool,0); background-color:inherit">animated:Bool){
- //触发childd的viewDidAppear这些方法
- funcendAppearanceTransition(){
- //childViewController的作为状态栏
- funcchildViewControllerForStatusBarStyle()->UIViewController?{
- returnnil;
- //childViewController的状态栏是否隐藏设置状态栏
- funcchildViewControllerForStatusBarHidden()->UIViewController?{
- 恢复相关
copy
restorationIdentifier恢复标示
- restorationClass恢复的类
- overridefuncencodeRestorableStateWithCoder(coder:NSCoder){
- overridefuncdecodeRestorableStateWithCoder(coder:NSCoder){
- applicationFinishedRestoringState()恢复完成
获得其他的ViewController
copy
println("parentViewController=(self.parentViewController)")
- println("presentedViewController=(self.presentedViewController)")
- println("presentingViewController=(self.presentingViewController)")
- //self.navigationController
- //self.tabBarController
- //self.presentationController
- //self.splitViewController
- //self.popoverPresentationController
StatusBar相关
- viewController.modalPresentationCapturesStatusBarAppearance=true
- //设置当前ViewController的StatusBar的样式
- overridefuncpreferredStatusBarStyle()->UIStatusBarStyle{
- return.Default
- //隐藏还是展示statusBar
- overridefuncprefersStatusBarHidden()->Bool{
- //statusBar的改变动画
- overridefuncpreferredStatusBarUpdateAnimation()->UIStatusBarAnimation{
- return.Fade
- //当statusBar的状态改变后需要调用刷新
- //setNeedsStatusBarAppearanceUpdate()
Navigation相关
copy
overridefuncsetToolbarItems(toolbarItems:[AnyObject]?,0); background-color:inherit">animated:Bool){
- self.navigationItem
- self.editButtonItem()
- hidesBottomBarWhenPushed=self.toolbarItems=nil
TabBar相关
copy
self.toolbarItems
常量
copy
UIModalTransitionStyle
- ModalPresentationStyles
- UIViewControllerHierarchyInconsistencyException
- UIViewControllerShowDetailTargetDidChangeNotification
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|