UIViewController-Swift

UIViewController类详解:

通过Nib文件初始化

[objc] view plain copy

  1. init(nibName nibName: String?, bundle nibBundle: NSBundle?)
  2. println("nibName = \(self.nibName)")                                    //nibName
  3. println("nibBundle = \(self.nibBundle)")                                //nibBundle

StoryBoard相关

[objc] view plain copy

  1. println("storyboard = \(self.storyboard)")                              //storyboard<pre name="code" class="objc">//在跳转之前对Segue进行判断,如果返回false则不之行这个Segue的跳转, performSegueWithIdentifier:sender:如果使用了,则这个方法无效
  2. override func shouldPerformSegueWithIdentifier(identifier: String?, sender: AnyObject?) -> Bool {
  3. return true
  4. }
  5. //跳转执行
  6. override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
  7. print("prepareForSegue")
  8. }
  9. //根据UIStoryBoarSegue的Identifier进行跳转
  10. override func performSegueWithIdentifier(identifier: String?, sender: AnyObject?) {
  11. super.performSegueWithIdentifier(identifier!, sender: sender)
  12. }

[objc] view plain copy

  1. //subViewController是否能够执行Unwind Segue
  2. override func canPerformUnwindSegueAction(action: Selector, fromViewController: UIViewController, withSender sender: AnyObject) -> Bool {
  3. }

[objc] view plain copy

  1. //如果执行Unwind Segue,就返回Segue
  2. override func segueForUnwindingToViewController(toViewController: UIViewController, fromViewController: UIViewController, identifier: String?) -> UIStoryboardSegue {
  3. }

[objc] view plain copy

  1. //能够执行Segue的Controller
  2. func viewControllerForUnwindSegueAction(action: Selector, fromViewController: UIViewController, withSender sender: AnyObject?) -> UIViewController? {
  3. }



Unwindsegue的实现原理请参考相关文章

View相关

[objc] view plain copy

  1. println("view = \(view)")
  2. println("view is loaded = \(isViewLoaded())")
  3. title = "ViewController"<pre name="code" class="objc">//如果不是nib文件初始化而来,初始化的时候需要调用这个方法初始化view,此方法不能主动调用,是系统调用的<pre name="code" class="objc">override func loadView() {
  4. super.loadView()<pre name="code" class="objc">}//view初始化以后调用

[objc] view plain copy

  1. override func viewDidLoad() {

[objc] view plain copy

  1. super.viewDidLoad()   <span style="font-family: Arial, Helvetica, sans-serif;">//view将可见的时候调用</span>
  2. } <pre name="code" class="objc">override func viewWillAppear(animated: Bool) {
  3. super.viewWillAppear(animated)
  4. }
  5. // view变得完全可见了以后执行
  6. override func viewDidAppear(animated: Bool) {
  7. super.viewDidAppear(animated)
  8. }
  9. //view被遮挡或者隐藏时调用
  10. override func viewWillDisappear(animated: Bool) {
  11. super.viewWillDisappear(animated)
  12. }
  13. //view被遮挡或者隐藏后调用
  14. override func viewDidDisappear(animated: Bool) {
  15. super.viewDidDisappear(animated)
  16. }




模式跳转

[objc] view plain copy

  1. //设置模式跳转的类别,但是必须是目的Controller设置,不能是上级设置
  2. //CoverVertical, FlipHorizontal, CrossDissolve, PartialCurl四种类型
  3. viewController.modalTransitionStyle = .FlipHorizontal
  4. //设置模式展示样式,适合于iPad上
  5. viewController.modalPresentationStyle = .FullScreen
  6. //如果展示不是.FullScreen, 那么设置是不是捕获statusBar的样式,适合iPad
  7. viewController.modalPresentationCapturesStatusBarAppearance = true
  8. //判断在模式跳转时消失是否键盘
  9. viewController.disablesAutomaticKeyboardDismissal()
  10. presentViewController(viewController, animated: true) { () -> Void in
  11. //跳转到下个界面
  12. }
  13. dismissViewControllerAnimated(true , completion: { () -> Void in
  14. //回复模式跳转
  15. })

配置View的layout

[objc] view plain copy

  1. // layoutSubviews方法调用之前
  2. override func viewWillLayoutSubviews() {
  3. super.viewWillLayoutSubviews()
  4. }
  5. // layoutSubviews方法调用之后
  6. override func viewDidLayoutSubviews() {
  7. super.viewDidLayoutSubviews()
  8. }<pre name="code" class="objc">

updateViewConstraints()


[objc] view plain copy

  1. //延伸的方向--set which sides of your view can be extended to cover the whole screen.
  2. if self.respondsToSelector(Selector("edgesForExtendedLayout")) {
  3. self.edgesForExtendedLayout = .None
  4. }
  5. //Scrollview滚动时处于全屏,默认YES
  6. if self.respondsToSelector(Selector("automaticallyAdjustsScrollViewInsets")) {
  7. self.automaticallyAdjustsScrollViewInsets = true
  8. }
  9. //当statusbar是透明时,是否扩展至StatusBar,默认情况下是NO,且statusbar不是透明的
  10. if self.respondsToSelector(Selector("extendedLayoutIncludesOpaqueBars")) {
  11. self.extendedLayoutIncludesOpaqueBars = false
  12. }
  13. //控制view的大小UIPopoverController用的比较的广泛
  14. self.preferredContentSize = self.view.bounds.size

跳转相关

[objc] view plain copy

  1. isBeingPresented()                                                      //是否在展示
  2. isBeingDismissed()                                                      //是否在dismiss
  3. isMovingToParentViewController()
  4. isMovingFromParentViewController()

旋转相关

[objc] view plain copy

  1. //是否需要旋转
  2. override func shouldAutorotate() -> Bool {
  3. return true
  4. }
  5. //支持的方向
  6. override func supportedInterfaceOrientations() -> Int {
  7. return 2
  8. }
  9. //优先支持的方向
  10. override func preferredInterfaceOrientationForPresentation() -> UIInterfaceOrientation {
  11. return .Portrait
  12. }

自定义的ViewController Container

[objc] view plain copy

  1. //https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomContainerViewControllers/CreatingCustomContainerViewControllers.html
  2. //addChildVIewController:调用这个方法指明一个视图控制器作为你的子视图。
  3. func addChildViewController(childController: UIViewController) {
  4. }
  5. //调用这个方法将一个视图控制器从你的子视图列表里移除。
  6. func removeFromParentViewController() {
  7. }
  8. //这是一个使用一个唯一可选的视图替换另一个视图的新方法,或者移动一个子视图到前台来。通过使用这个方法,这个视图控制器的生命周期信息会被正确地发送出去        func transitionFromViewController(fromViewController: UIViewController, toViewController: UIViewController, duration: NSTimeInterval, options: UIViewAnimationOptions, animations: () -> Void, completion: ((Bool) -> Void)?) {
  9. }
  10. //将要移到父Controller
  11. func willMoveToParentViewController(parent: UIViewController?) {
  12. }
  13. //已经移到父Controller
  14. func didMoveToParentViewController(parent: UIViewController?) {
  15. }
  16. //触发子ViewController的viewWillAppear
  17. func beginAppearanceTransition(isAppearing: Bool, animated: Bool) {
  18. }
  19. //触发childd的viewDidAppear这些方法
  20. func endAppearanceTransition() {
  21. }
  22. //child ViewController的作为状态栏
  23. func childViewControllerForStatusBarStyle() -> UIViewController? {
  24. return nil;
  25. }
  26. //child ViewController的状态栏是否隐藏设置状态栏
  27. func childViewControllerForStatusBarHidden() -> UIViewController? {
  28. return nil;
  29. }

恢复相关

[objc] view plain copy

  1. restorationIdentifier 恢复标示
  2. restorationClass      恢复的类
  3. override func encodeRestorableStateWithCoder(coder: NSCoder) {
  4. }
  5. override func decodeRestorableStateWithCoder(coder: NSCoder) {
  6. }
  7. applicationFinishedRestoringState() 恢复完成

获得其他的ViewController

[objc] view plain copy

  1. println("parentViewController=\(self.parentViewController)")            //父类Controller
  2. println("presentedViewController=\(self.presentedViewController)")      //Controller模式跳转到去Controller或父容器
  3. println("presentingViewController=\(self.presentingViewController)")    //Controller模式跳转来自于Controller或父容器
  4. //        self.navigationController
  5. //        self.tabBarController
  6. //        self.presentationController
  7. //        self.splitViewController
  8. //        self.popoverPresentationController

StatusBar相关

[objc] view plain copy

  1. //如果展示不是.FullScreen, 那么设置是不是捕获statusBar的样式,适合iPad
  2. viewController.modalPresentationCapturesStatusBarAppearance = true
  3. //child ViewController的作为状态栏
  4. func childViewControllerForStatusBarStyle() -> UIViewController? {
  5. return nil;
  6. }
  7. //child ViewController的状态栏是否隐藏设置状态栏
  8. func childViewControllerForStatusBarHidden() -> UIViewController? {
  9. return nil;
  10. }
  11. //设置当前ViewController的StatusBar的样式
  12. override func preferredStatusBarStyle() -> UIStatusBarStyle {
  13. return .Default
  14. }
  15. //隐藏还是展示statusBar
  16. override func prefersStatusBarHidden() -> Bool {
  17. return true
  18. }
  19. //statusBar的改变动画
  20. override func preferredStatusBarUpdateAnimation() -> UIStatusBarAnimation {
  21. return .Fade
  22. }
  23. //当statusBar的状态改变后需要调用刷新
  24. //    setNeedsStatusBarAppearanceUpdate()

Navigation相关

[objc] view plain copy

  1. override func setToolbarItems(toolbarItems: [AnyObject]?, animated: Bool) {
  2. }
  3. self.navigationItem
  4. self.editButtonItem()
  5. hidesBottomBarWhenPushed = true
  6. self.toolbarItems = nil

TabBar相关

[objc] view plain copy

  1. self.toolbarItems

常量

[objc] view plain copy

    1. UIModalTransitionStyle
    2. Modal Presentation Styles
    3. UIViewControllerHierarchyInconsistencyException
    4. UIViewControllerShowDetailTargetDidChangeNotification
时间: 2024-11-09 00:28:45

UIViewController-Swift的相关文章

gif动画效果-swift

// ViewController.swift // Animations // Created by WZ on 16/1/15. // Copyright © 2016年 iwangzheng.com. All rights reserved. import UIKit class ViewController: UIViewController { var count = 1 var timer = NSTimer() var isAnimating = true @IBOutlet we

IOS-Swift、Objective-C、C++混合编程

1.Objective-C调用C++代码 后缀为m文件的是Objective-C的执行文件,而后缀为mm文件的是Objective-C++文件. 直接在Objective-C中是无法调用C++代码的,所以如果需要在Objective-C调用C++语言就需要直接将后缀m文件改为mm,然后就可以调用C++代码了. Objective-C兼容C,Objective-C++兼容C.C++. 接下来是在OC工程中创建C++文件,并调用C++的代码: 然后在OC文件中直接用C++的语法调用C++,所以前提是

iOS-swift-如何实现崩溃树级别文件夹和扩大

如何实现崩溃树级别文件夹和扩大 1 介绍 最近,它一直在使用swift写项目,现在,他已经完成了不到一半,大概11可在一月中旬完成,什么时候会出一系列视频,源代码放出来.我是iOS 零基础学习swift,之前没有不论什么objc经验,这几个星期一直在掉坑爬坑的循环中度过.当前不仅swift中文资料稀缺,英文资料也非常少,不少问题到最后还是要去看objc代码,导致我如今看objc连蒙带猜也能明确个七七八八.除此之外,加的几个swift学习群中的大牛也非常热心,非常多问题都能直指痛点.所谓饮水思源,

ios开发——实用技术OC-Swift篇&amp;本地通知与远程通知详解

本地通知与远程通知详解 一:本地通知 Local Notification的作用 Local Notification(本地通知) :是根据本机状态做出的通知行为,因此,凡是仅需依赖本机状态即可判断需要发出通知的行为都可以或者说应该使用Local Notification来处理.比方说:iBeacon中进入了某个Beacon region,或者说自定义的一些定时提醒等. 构建Local Notification 在iOS中,构建LocalNotification非常简单,只需要掌握好NSLoca

iOS-swift-如何实现树级目录的折叠和展开

如何实现树级目录的折叠和展开 1 引言 最近一直在用swift写项目,目前已经完成了小半,大概11月中旬能够完成,到时会出个系列视频,把源码放出来.我是iOS 零基础学习swift,之前没有任何objc经验,这几个星期一直在掉坑爬坑的循环中度过.当前不仅swift中文资料稀缺,英文资料也很少,不少问题到最后还是要去看objc代码,导致我现在看objc连蒙带猜也能明白个七七八八.除此之外,加的几个swift学习群中的大牛也很热心,很多问题都能直指痛点.所谓饮水思源,上周趁项目空闲,帮一位网友做了个

IOS学习之旅-Swift-函数

//----------------    函数    --------------------------- //func为函数名关键字 //一个参数 //func+函数名+(参数名:参数类型)-> 返回类型 func sayHello(personName: String) -> String { let test = "hello," + personName + "!" return test } println(sayHello("p

ios开发——实用技术OC-Swift篇&amp;触摸与手势识别

iOS开发学习之触摸事件和手势识别 iOS的输入事件 触摸事件 手势识别 手机摇晃 一.iOS的输入事件 触摸事件(滑动.点击) 运动事件(摇一摇.手机倾斜.行走),不需要人为参与的 远程控制事件(耳机控制手机声音) 1??iOS事件对象都是UIEvent类的实例 UIEvent类对事件类型定义了enum常量: typedef NS_ENUM(NSInteger, UIEventType){ UIEventTypeTouches, UIEventTypeMotion, UIEventRemote

iOS开发笔记-swift实现iOS数据持久化之归档NSKeyedArchiver

IOS数据持久化的方式分为三种: 属性列表 (plist.NSUserDefaults) 归档 (NSKeyedArchiver) 数据库 (SQLite.Core Data.第三方类库等 归档(又名序列化),把对象转为字节码,以文件的形式存储到磁盘上:程序运行过程中或者当再次重写打开程序的时候,可以通过解归档(反序列化)还原这些对象.本文主要介绍swift实现iOS数据归档. 归档Foundation框架对象 func archiveData(){ var path: AnyObject=NS

泛型约束-swift

1.泛型定义本体有参量类型约束: 2.泛型扩展对参量类型约束: 3.函数参量约束: 泛型类型的访问控制: 1.与类型无关的通用函数,泛型的任何实例都可以访问: 2.与类型有关的函数(通过扩展约束实现),只有特定类型实例化的泛型实例才能访问: 由此得出结论: 再考虑泛型约束的情况下,泛型类型是一个代码复用家族: 1.与类型无关的部分为顶级泛型: 2.参量类型为继承(符合)关系的约束泛型为二级泛型: 3.参量类型为具体类型的泛型为具体泛型: 在考虑泛型约束的情况下,泛型函数的访问控制由泛型和参量类型