首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >自定义UIView在视图控制器中被解包为nil

自定义UIView在视图控制器中被解包为nil
EN

Stack Overflow用户
提问于 2020-08-27 22:11:33
回答 1查看 136关注 0票数 0

我正在尝试向视图控制器添加一个自定义的UIView。我以前这样做过,没有任何问题,所以我在这里非常困惑。

我已经正确地配置了文件所有者,已经为自定义视图设置了所有必需的init方法等。在我看来没有什么不对劲的地方,所有的配置都和以前完全一样。

当我运行代码时,两个自定义视图init方法都没有被调用(在这两个方法上都放置了断点)。当我将自定义视图作为IBOutlet添加到视图控制器中时,我收到一个错误消息:

“致命错误:隐式展开可选值时意外发现nil”。

这来自于我的视图控制器中试图改变自定义视图颜色的一行代码。我假设是因为视图还没有初始化,所以它返回nil。

那么为什么这个自定义视图没有被初始化,你有什么想法吗?

ViewController:

代码语言:javascript
复制
class ProductSearchViewController: UINavigationController {
    
    @IBOutlet weak var mainSearchView: MainSearchView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        applyTheme()
        setupNavigationBar()
        // Do any additional setup after loading the view.
    }
    
    func applyTheme() {
        self.view.backgroundColor = UIColor.init(named: "appPrimaryColour")
        self.mainSearchView.backgroundColor = UIColor.yellow
    }
    
    func setupNavigationBar() {
        self.title = NSLocalizedString("product.search.tab.bar.item.title", comment: "")
        self.navigationBar.isHidden = true
    }
}

自定义视图:

代码语言:javascript
复制
import UIKit

class MainSearchView: UIView {
    
    @IBOutlet var contentView: UIView!
    @IBOutlet weak var searchBar: UITextField!
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        commonInit()
    }
    
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        commonInit()
    }

    func commonInit() {
        let xib = UINib(nibName: "MainSearchView", bundle: nil)
        xib.instantiate(withOwner: self, options: nil)
        addSubview(contentView)
        contentView.frame = self.bounds
        contentView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
        contentView.backgroundColor = UIColor.blue
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-28 02:49:31

ProductSearchViewController是从UINavigationController扩展而来的,如果它是从UIViewController扩展而来的,那么你的问题就解决了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63617915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档