美文网首页
调用 stroyboard 中控件 App crash

调用 stroyboard 中控件 App crash

作者: NapoleonY | 来源:发表于2019-08-06 16:50 被阅读0次

    概述

    App 中调用 storyboard 中添加的 tableView , App crash,提示说 tableView 为 nil

    备注:
    storyboard名称:someViewController.storyboard
    storyboard 对应 class:someViewController.swift
    someViewController.storyboard 中拖入了一个 tableView,然后在 someViewController.swift 中 control-鼠标左键 添加了对应的 @IBOutlet weak var mainTableView: UITableView!

    分析

    代码中是直接通过 UIViewController 初始化得到的 VC,然后在 VC 中的 viewDidLoad() 中调用 tableView。此时 storyboard 还未被初始化 ,对应的 tableView 当然为 nil

    解决

    获取 VC 应该通过 storyboard,不应该直接 let vc = someViewController(),具体如下

    func storyBoardViewController(vcName: String) -> UIViewController {
        let storyBoard = UIStoryboard.init(name: "someViewController", bundle: nil)
        let vc = storyBoard.instantiateViewController(withIdentifier: vcName)
        return vc
    }
    
    // 具体调用
    let vc = storyBoardViewController(vcName: "vcId")
    

    注意:instantiateViewController(withIdentifier:)中参数 identifier 为 storyboard 文件中 右边栏-show the identity inspector- identity- storyboard ID 设置的,如果不在 storyboard 文件中设置 对应的 ID,该方法会导致 App crash

    相关文章

      网友评论

          本文标题:调用 stroyboard 中控件 App crash

          本文链接:https://www.haomeiwen.com/subject/znjwdctx.html