日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

UIViewController详解

發(fā)布時(shí)間:2023/12/15 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 UIViewController详解 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

UIViewController類詳解:

通過(guò)Nib文件初始化

[objc]?view plaincopy
  • init(nibName?nibName:?String?,?bundle?nibBundle:?NSBundle?)??
  • println("nibName?=?\(self.nibName)")????????????????????????????????????//nibName??
  • println("nibBundle?=?\(self.nibBundle)")????????????????????????????????//nibBundle??
  • StoryBoard相關(guān)

    [objc]?view plaincopy
  • println("storyboard?=?\(self.storyboard)")??????????????????????????????//storyboard<pre?name="code"?class="objc">//在跳轉(zhuǎn)之前對(duì)Segue進(jìn)行判斷,如果返回false則不之行這個(gè)Segue的跳轉(zhuǎn),?performSegueWithIdentifier:sender:如果使用了,則這個(gè)方法無(wú)效??
  • override?func?shouldPerformSegueWithIdentifier(identifier:?String?,?sender:?AnyObject?)?->?Bool?{??
  • ????return?true??
  • }??
  • //跳轉(zhuǎn)執(zhí)行??
  • override?func?prepareForSegue(segue:?UIStoryboardSegue,?sender:?AnyObject?)?{??
  • ???print("prepareForSegue")??
  • }??
  • //根據(jù)UIStoryBoarSegue的Identifier進(jìn)行跳轉(zhuǎn)??
  • override?func?performSegueWithIdentifier(identifier:?String?,?sender:?AnyObject?)?{??
  • ????super.performSegueWithIdentifier(identifier!,?sender:?sender)??
  • }??
  • [objc]?view plaincopy
  • //subViewController是否能夠執(zhí)行Unwind?Segue??
  • override?func?canPerformUnwindSegueAction(action:?Selector,?fromViewController:?UIViewController,?withSender?sender:?AnyObject)?->?Bool?{????
  • }??
  • [objc]?view plaincopy
  • //如果執(zhí)行Unwind?Segue,就返回Segue??
  • override?func?segueForUnwindingToViewController(toViewController:?UIViewController,?fromViewController:?UIViewController,?identifier:?String?)?->?UIStoryboardSegue?{??
  • }??
  • [objc]?view plaincopy
  • //能夠執(zhí)行Segue的Controller??
  • func?viewControllerForUnwindSegueAction(action:?Selector,?fromViewController:?UIViewController,?withSender?sender:?AnyObject?)?->?UIViewController??{??
  • }??
  • Unwindsegue的實(shí)現(xiàn)原理請(qǐng)參考相關(guān)文章

    View相關(guān)

    [objc]?view plaincopy
  • println("view?=?\(view)")??
  • println("view?is?loaded?=?\(isViewLoaded())")??
  • title?=?"ViewController"<pre?name="code"?class="objc">//如果不是nib文件初始化而來(lái),初始化的時(shí)候需要調(diào)用這個(gè)方法初始化view,此方法不能主動(dòng)調(diào)用,是系統(tǒng)調(diào)用的<pre?name="code"?class="objc">override?func?loadView()?{???
  • ????super.loadView()<pre?name="code"?class="objc">}//view初始化以后調(diào)用??
  • [objc]?view plaincopy
  • override?func?viewDidLoad()?{??
  • [objc]?view plaincopy
  • ????super.viewDidLoad()???<span?style="font-family:?Arial,?Helvetica,?sans-serif;">//view將可見(jiàn)的時(shí)候調(diào)用</span>??
  • }?<pre?name="code"?class="objc">override?func?viewWillAppear(animated:?Bool)?{??
  • ????super.viewWillAppear(animated)??
  • }??
  • ??????
  • //?view變得完全可見(jiàn)了以后執(zhí)行??
  • override?func?viewDidAppear(animated:?Bool)?{??
  • ????super.viewDidAppear(animated)??
  • }??
  • ??????
  • //view被遮擋或者隱藏時(shí)調(diào)用??
  • override?func?viewWillDisappear(animated:?Bool)?{??
  • ????super.viewWillDisappear(animated)??
  • }??
  • ??????
  • //view被遮擋或者隱藏后調(diào)用??
  • override?func?viewDidDisappear(animated:?Bool)?{??
  • ????super.viewDidDisappear(animated)??
  • }??
  • 模式跳轉(zhuǎn)

    [objc]?view plaincopy
  • //設(shè)置模式跳轉(zhuǎn)的類別,但是必須是目的Controller設(shè)置,不能是上級(jí)設(shè)置??
  • //CoverVertical,?FlipHorizontal,?CrossDissolve,?PartialCurl四種類型??
  • viewController.modalTransitionStyle?=?.FlipHorizontal??
  • //設(shè)置模式展示樣式,適合于iPad上??
  • viewController.modalPresentationStyle?=?.FullScreen??
  • //如果展示不是.FullScreen,?那么設(shè)置是不是捕獲statusBar的樣式,適合iPad??
  • viewController.modalPresentationCapturesStatusBarAppearance?=?true??
  • //判斷在模式跳轉(zhuǎn)時(shí)消失是否鍵盤??
  • viewController.disablesAutomaticKeyboardDismissal()??
  • ??
  • presentViewController(viewController,?animated:?true)?{?()?->?Void?in??
  • ????//跳轉(zhuǎn)到下個(gè)界面??
  • }??
  • dismissViewControllerAnimated(true?,?completion:?{?()?->?Void?in??
  • ????//回復(fù)模式跳轉(zhuǎn)??
  • ??????
  • })??
  • 配置View的layout
    [objc]?view plaincopy
  • //?layoutSubviews方法調(diào)用之前??
  • override?func?viewWillLayoutSubviews()?{??
  • ????super.viewWillLayoutSubviews()??
  • }??
  • //?layoutSubviews方法調(diào)用之后??
  • ?override?func?viewDidLayoutSubviews()?{??
  • ????super.viewDidLayoutSubviews()??
  • }<pre?name="code"?class="objc">??
  • updateViewConstraints() [objc]?view plaincopy
  • //延伸的方向--set?which?sides?of?your?view?can?be?extended?to?cover?the?whole?screen.??
  • if?self.respondsToSelector(Selector("edgesForExtendedLayout"))?{??
  • ????self.edgesForExtendedLayout?=?.None??
  • }??
  • //Scrollview滾動(dòng)時(shí)處于全屏,默認(rèn)YES??
  • if?self.respondsToSelector(Selector("automaticallyAdjustsScrollViewInsets"))?{??
  • ?????self.automaticallyAdjustsScrollViewInsets?=?true??
  • }??
  • //當(dāng)statusbar是透明時(shí),是否擴(kuò)展至StatusBar,默認(rèn)情況下是NO,且statusbar不是透明的??
  • if?self.respondsToSelector(Selector("extendedLayoutIncludesOpaqueBars"))?{??
  • ????self.extendedLayoutIncludesOpaqueBars?=?false??
  • }??
  • ??????????
  • //控制view的大小UIPopoverController用的比較的廣泛??
  • self.preferredContentSize?=?self.view.bounds.size??
  • 跳轉(zhuǎn)相關(guān) [objc]?view plaincopy
  • isBeingPresented()??????????????????????????????????????????????????????//是否在展示??
  • isBeingDismissed()??????????????????????????????????????????????????????//是否在dismiss??????????
  • ??????????
  • isMovingToParentViewController()??
  • isMovingFromParentViewController()??
  • 旋轉(zhuǎn)相關(guān)
    [objc]?view plaincopy
  • //是否需要旋轉(zhuǎn)??
  • override?func?shouldAutorotate()?->?Bool?{??
  • ????return?true??
  • }??
  • //支持的方向??
  • override?func?supportedInterfaceOrientations()?->?Int?{??
  • ????return?2??
  • }??
  • //優(yōu)先支持的方向??
  • override?func?preferredInterfaceOrientationForPresentation()?->?UIInterfaceOrientation?{??
  • ????return?.Portrait??
  • }??
  • 自定義的ViewController Container

    [objc]?view plaincopy
  • //https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomContainerViewControllers/CreatingCustomContainerViewControllers.html??
  • //addChildVIewController:調(diào)用這個(gè)方法指明一個(gè)視圖控制器作為你的子視圖。??
  • func?addChildViewController(childController:?UIViewController)?{??
  • ??????
  • }??
  • //調(diào)用這個(gè)方法將一個(gè)視圖控制器從你的子視圖列表里移除。??
  • func?removeFromParentViewController()?{??
  • ??????
  • }??
  • //這是一個(gè)使用一個(gè)唯一可選的視圖替換另一個(gè)視圖的新方法,或者移動(dòng)一個(gè)子視圖到前臺(tái)來(lái)。通過(guò)使用這個(gè)方法,這個(gè)視圖控制器的生命周期信息會(huì)被正確地發(fā)送出去????????func?transitionFromViewController(fromViewController:?UIViewController,?toViewController:?UIViewController,?duration:?NSTimeInterval,?options:?UIViewAnimationOptions,?animations:?()?->?Void,?completion:?((Bool)?->?Void)?)?{??
  • ??????
  • }??
  • //將要移到父Controller??
  • func?willMoveToParentViewController(parent:?UIViewController?)?{??
  • ??????
  • }??
  • //已經(jīng)移到父Controller??
  • func?didMoveToParentViewController(parent:?UIViewController?)?{??
  • ??????
  • }??
  • //觸發(fā)子ViewController的viewWillAppear??
  • func?beginAppearanceTransition(isAppearing:?Bool,?animated:?Bool)?{??
  • ??????
  • }??
  • //觸發(fā)childd的viewDidAppear這些方法??
  • func?endAppearanceTransition()?{??
  • ??????
  • }??
  • //child?ViewController的作為狀態(tài)欄??
  • func?childViewControllerForStatusBarStyle()?->?UIViewController??{??
  • ????return?nil;??
  • }??
  • //child?ViewController的狀態(tài)欄是否隱藏設(shè)置狀態(tài)欄??
  • func?childViewControllerForStatusBarHidden()?->?UIViewController??{??
  • ????return?nil;??
  • }??
  • 恢復(fù)相關(guān)
    [objc]?view plaincopy
  • restorationIdentifier?恢復(fù)標(biāo)示??
  • restorationClass??????恢復(fù)的類??
  • override?func?encodeRestorableStateWithCoder(coder:?NSCoder)?{??
  • ??????????
  • }??
  • override?func?decodeRestorableStateWithCoder(coder:?NSCoder)?{??
  • ??????????
  • }??
  • applicationFinishedRestoringState()?恢復(fù)完成??
  • 獲得其他的ViewController
    [objc]?view plaincopy
  • println("parentViewController=\(self.parentViewController)")????????????//父類Controller??
  • println("presentedViewController=\(self.presentedViewController)")??????//Controller模式跳轉(zhuǎn)到去Controller或父容器??
  • println("presentingViewController=\(self.presentingViewController)")????//Controller模式跳轉(zhuǎn)來(lái)自于Controller或父容器??
  • //????????self.navigationController??
  • //????????self.tabBarController??
  • //????????self.presentationController??
  • //????????self.splitViewController??
  • //????????self.popoverPresentationController??
  • StatusBar相關(guān) [objc]?view plaincopy
  • //如果展示不是.FullScreen,?那么設(shè)置是不是捕獲statusBar的樣式,適合iPad??
  • viewController.modalPresentationCapturesStatusBarAppearance?=?true??
  • //child?ViewController的作為狀態(tài)欄??
  • func?childViewControllerForStatusBarStyle()?->?UIViewController??{??
  • ????return?nil;??
  • }??
  • //child?ViewController的狀態(tài)欄是否隱藏設(shè)置狀態(tài)欄??
  • func?childViewControllerForStatusBarHidden()?->?UIViewController??{??
  • ????return?nil;??
  • }??
  • //設(shè)置當(dāng)前ViewController的StatusBar的樣式??
  • override?func?preferredStatusBarStyle()?->?UIStatusBarStyle?{??
  • ????return?.Default??
  • }??
  • //隱藏還是展示statusBar??
  • override?func?prefersStatusBarHidden()?->?Bool?{??
  • ????return?true??
  • }??
  • //statusBar的改變動(dòng)畫??
  • override?func?preferredStatusBarUpdateAnimation()?->?UIStatusBarAnimation?{??
  • ????return?.Fade??
  • }??
  • //當(dāng)statusBar的狀態(tài)改變后需要調(diào)用刷新??
  • //????setNeedsStatusBarAppearanceUpdate()??
  • Navigation相關(guān)
    [objc]?view plaincopy
  • override?func?setToolbarItems(toolbarItems:?[AnyObject]?,?animated:?Bool)?{??
  • ??????????
  • }??
  • self.navigationItem??
  • self.editButtonItem()??
  • hidesBottomBarWhenPushed?=?true??
  • self.toolbarItems?=?nil??
  • TabBar相關(guān)
    [objc]?view plaincopy
  • self.toolbarItems??
  • 常量
    [objc]?view plaincopy
  • UIModalTransitionStyle??
  • Modal?Presentation?Styles??
  • UIViewControllerHierarchyInconsistencyException??
  • UIViewControllerShowDetailTargetDidChangeNotification ?
  • 總結(jié)

    以上是生活随笔為你收集整理的UIViewController详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。