对于OC 中 ViewController *vc = [[ViewController alloc] init],方法默认会加载一个同名的xib文件当View。但是在swift中  ViewController.init() 在 iOS8 上他不会默认加载xib,而在iOS 9 中却默认加载了 xib。

前段时间工程一直在iOS9 + 环境的真机上调试,今天拿iOS8的机子调试,发现所有使用XIB创的 ViewController都不可用。甚至因为可选类型而到时奔溃。无奈之下,重新建一个测试demo,找问题。终于解决了这个问题。

1,在AppDelegate中,如果这样写,因为不使用storyboard,而使用XIB,在iOS8中,无法显示XIB中的内容。

[objc] view plaincopy
  1. func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
  2. self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
  3. self.window?.makeKeyAndVisible()
  4. let vc = myViewController()
  5. let navigation = UINavigationController.init(rootViewController: vc)
  6. self.window?.rootViewController = navigation
  7. return true
  8. }

2,我们需要在找到XIB,在初始化的时候,需要使用nib的方法。这样可以显示正常。

[objc] view plaincopy
  1. func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
  2. self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
  3. self.window?.makeKeyAndVisible()
  4. let vc: myViewController? = myViewController(nibName: "myViewController", bundle: nil)
  5. let navigation = UINavigationController.init(rootViewController: vc!)
  6. self.window?.rootViewController = navigation
  7. return true
  8. }
[objc] view plaincopy
  1. class myViewController: UIViewController {
  2. @IBOutlet weak var titleLab: UILabel!
  3. override init(nibName nibNameOrNil: String!, bundle nibBundleOrNil: NSBundle!) {
  4. super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
  5. }
  6. required init?(coder aDecoder: NSCoder) {
  7. fatalError("init(coder:) has not been implemented")
  8. }
  9. override func viewDidLoad() {
  10. super.viewDidLoad()
  11. titleLab.text = "这是什么事 啊!!!!!"
  12. }
  13. override func didReceiveMemoryWarning() {
  14. super.didReceiveMemoryWarning()
  15. // Dispose of any resources that can be recreated.
  16. }
解决方案
1. 通过加载 xib的方式来初始化ViewController (取代默认的 ViewController.init())
2.重写 init() 方法

//3.重写无参数初始化方法,自动调用xib文件

convenience override init() {

var nibNameOrNil = String?("RootViewController")

//考虑到xib文件可能不存在或被删,故加入判断

if NSBundle.mainBundle().pathForResource(nibNameOrNil, ofType: "xib") == nil

{

nibNameOrNil = nil

}

self.init(nibName: nibNameOrNil, bundle: nil)

}

swift iOS8 XIB 问题 ViewController.init() xib相关推荐

  1. 使用XIB实现嵌套自定义XIB视图

    在进行 iOS 开发的过程中,对于一些复杂的界面,我们可以通过 Interface Builder 这个 Xcode 集成的可视化界面编辑工具在完成,这回节省大部分时间以及代码量.它的使用方法这里不做 ...

  2. 【swift学习笔记】三.使用xib自定义UITableViewCell

    使用xib自定义tableviewCell看一下效果图 1.自定义列 新建一个xib文件 carTblCell,拖放一个UITableViewCell,再拖放一个图片和一个文本框到tableviewc ...

  3. iOS在Xib加载自定义Xib视图

    iOS中在Xib或者Storyboard中加载自定义的Xib视图 最近都在做Android项目的开发,许久没有捣腾iOS开发了,今天接到一个旧项目功能的开发,为了快速开发出来决定使用Xib或者Stor ...

  4. [iOS Xib加载/封装] xib加载以后无法赋值Laber属性的值

    参考:iOS - xib史上最全说明 今天用xib封装一个view,已达到特定的需求, 然后发现 一开始的方法无法在加载xib之后对其中的Laber赋值, 错误❌ 的方式: 重写了init方法,使用a ...

  5. ios xib 初始化高度_iOS xib自定义,高度减少64

    释放双眼,带上耳机,听听看~! 解决在导航栏不透明的情况下,自定义xib view高度被压缩64的问题 在使用xib自定义view的时候,个人习惯性的直接使用xib中的约束,所以自然而然的要打开Aut ...

  6. ios swift ios8 模糊

    view = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100)) ///模糊 let effect = UIBlurEffect(st ...

  7. Smooth Freehand Drawing on iOS

    原网址:https://code.tutsplus.com/tutorials/smooth-freehand-drawing-on-ios--mobile-13164 博客中中文转载地址(直接网页翻 ...

  8. swift 3.0 中使用 xib

    文章写于2016年9月底,Xcode 8,swift 3.0 真是蛋疼,折腾了很长时间,试了网上很多教程,结果又莫名的可以了! 1.方法和OC中一样 将一个xib文件和一个ViewController ...

  9. Storyboard和Xib混用黑魔法-swift版

     Storyboard和Xib混用黑魔法-swift版 http://www.jianshu.com/p/24cc7f8cf06e 怎么在storyboard里面使用xib,并且可以显示xib效果 ...

最新文章

  1. 英文简历的几种常见形式
  2. matlab abc to dq0仿真,逆变器负载论文,关于基于同步旋转坐标的三相逆变器控制系统仿真相关参考文献资料-免费论文范文...
  3. keycloak学习
  4. 【语谱图】基于matlab语音信号语谱图【含Matlab源码 137期】
  5. r语言上机文本分析与词云绘制_R语言jiebaR包文本中文分词及词云上机练习,小白能做到...
  6. 并发编程学习之volatile关键字
  7. AMD IOMMU与Linux (3) -- DMA
  8. 搭建无人机仿真环境之PX4安装中出现的一些问题的解决
  9. vmware vsphere安装与使用
  10. Java 计算两个日期时间差(天数、时、分、秒、毫秒)
  11. 流行于大学里的30个脑筋急转弯
  12. 人脸检测:经典的VJ人脸检测器(类Harr特征,积分图加速法,级联的Adaboost强分类器)
  13. wps office 2010 Wps文字文档保存及自动保存方法介绍
  14. ubuntu18.04 台式机 安装 TPlink-5200H 无线网卡驱动 趟坑
  15. win10 系统出现“你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问。”
  16. ARP request或reply包丢失导致速率下降优化
  17. 提高淘宝店铺浏览量的20种方法
  18. 【数据挖掘之关联规则实战】关联规则智能推荐算法
  19. 超详细excle入门教程!万字长文,图文详解!
  20. PPP-RTK服务端卫星钟差估值性能分析

热门文章

  1. Python中将两个列表(list)数据zip起来
  2. R语言使用ggplot2包的快速可视化函数qplot绘制散点图实战
  3. R语言ggpattern填充各种色彩、形状、纹理、图片到ggplot2可视化图像中示例
  4. R语言时间序列(time series)分析实战:霍尔特指数Holt‘s平滑法预测
  5. python+HDF5+h5py
  6. R系统抽样(systematic sampling)
  7. python实现字典遍历稳定有序使用collection包OrderedDict
  8. Keras训练神经网络进行分类并进行交叉验证(Cross Validation)
  9. 四代 DNA 测序技术简述*
  10. 联想计算机无线网络设置密码,联想路由器怎么设置密码