`
啸笑天
  • 浏览: 3465763 次
  • 性别: Icon_minigender_1
  • 来自: China
社区版块
存档分类
最新评论

swift项目在iOS8 通过init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle

 
阅读更多

 原文地址

 

初始化代码:

MatchViewControllerPhone(nibName:"MatchViewControllerPhone", bundle: nil)

 

MatchViewControllerPhone类部分代码:

class MatchViewControllerPhone: UIViewController 

    @IBOutlet weak var container: UIScrollView!

 // MARK: - Life cycle

    override func viewDidLoad() {

        super.viewDidLoad()

         self.container.delegate = self   //iOS8设备上报错:fatal error: unexpectedly found nil while unwrapping an Optional value

    }

 

}

 

查看发现xib里的子控件都为nil导致的。

 

后来发现init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?)中nibNameOrNil参数在iOS8中为空,所有有以下解决方案:

    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {

        let classString = String(describing: type(of: self))

        super.init(nibName: nibNameOrNil ?? classString, bundle: nibBundleOrNil)

    }

 

ps

1、在iOS9iOS10设备上是好的,估计被苹果修复了

2、在storyboard中也是好的,所以xib换成storyboard也是可以解决的。 

分享到:
评论

相关推荐

    ios-XLBubbleTransition.zip

    super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) setupBubbleTransition() } required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) setupBubbleTransition() } private func ...

    GFNavigationController代码

    super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) delegate = self } required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) delegate = self } func ...

    自定义导航栏背景颜色

    super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) // 设置导航栏背景颜色 self.navigationBar.backgroundColor = UIColor(red: 0.1, green: 0.6, blue: 0.9, alpha: 1.0) } required init?...

    iphone自定义TabBar

    super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) let tabBar = CustomTabBar() self.tabBar = tabBar } ``` 3. **自定义TabBarItem**:如果需要,你可以创建一个自定义的`UITabBarItem`子类,用来...

    ios实现viewcontroller切换传值的三种方法

    super.init(nibName: nil, bundle: nil) } required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } } // 在prepare(for:sender:)方法中使用自定义初始化 ...

    ios自定义table例子

    本示例“ios自定义table例子”旨在教你如何通过自定义UITableViewCell来实现个性化展示,让你能够在表格中自由地绘制内容。 首先,自定义一个UITableViewCell类。在Swift中,你可以创建一个新的Swift文件,例如`...

    IOS tableView(一张图片标题详细说明)

    本篇文章将深入探讨如何在iOS项目中使用UITableView,结合“IOS tableView(一张图片标题详细说明)”这个标题,我们将重点讲解如何创建并定制一个带有图片和标题的tableView。 首先,我们需要创建一个UITableView,...

    xib和手写代码自定义UITableViewCell

    在iOS开发中,自定义UITableViewCell是一项常见的任务,它允许开发者根据需求创建独特的界面展示效果,提升用户体验。"xib和手写代码自定义UITableViewCell"这个主题涵盖了两种主要的自定义方式:通过故事板(XIB)...

    iOS策略模式的实现

    guard let nibName = String(describing: type), let nib = UINib(nibName: nibName, bundle: nil) else { return nil } return nib.instantiate(withOwner: self, options: nil).first as? T } let strategyView...

    UITableView使用自定义cell的例子

    在这个类中,我们可以根据需求添加UI元素,比如UILabel、UIButton等,并在`awakeFromNib`或Swift中的`init(style:reuseIdentifier:)`方法中进行初始化布局。 接着,我们需要为这个自定义cell创建一个对应的 nib ...

    三行代码组件化集成Flutter可用于已有iOS项目对原工程无侵入

    在iOS项目中,通过组件化集成Flutter,可以方便地在现有项目中引入Flutter模块,而无需大幅度改动原项目结构。本篇文章将深入探讨如何使用“三行代码”实现Flutter在已有iOS项目中的无侵入集成。 首先,我们需要...

    ios-封装一个简单的webView,代码里有使用说明.zip

    super.init(nibName: nil, bundle: nil) webView = UIWebView(frame: view.bounds) view.addSubview(webView) let url = URL(string: urlString)! webView.loadRequest(URLRequest(url: url)) } // 添加...

    touchcell的示例代码

    在iOS开发中,`UITableView` 是一种常用的组件,用于展示列表数据。`TouchCells` 这个主题,尤其是“touchcell的示例代码”,显然关注的是如何在`UITableViewCell` 内部添加交互元素,比如`UIButton`,并处理用户的...

    CustomGenericViewFromXib:Swift 2.0 XCode 7 Beta 6

    在Swift编程语言中,"CustomGenericViewFromXib"是一个常见的主题,特别是在iOS应用开发中。这个主题涉及到如何创建自定义的泛型视图,并且这些视图是从Xib(接口构建器)文件中加载的。Xib文件是Apple的Interface ...

    LoadedNibView

    在 iOS 应用开发中,我们通常使用 Interface Builder(.xib 或 .storyboard 文件)来设计用户界面,然后通过代码将这些界面与程序逻辑关联起来。LoadedNibView 提供了一种更高效、更简洁的方式来加载和使用 nib 文件...

Global site tag (gtag.js) - Google Analytics