gpt4 book ai didi

ios - 带有 XIB 的 CustomView - 初始化编码器方法中的无限循环

转载 作者:可可西里 更新时间:2023-11-01 00:35:33 25 4
gpt4 key购买 nike

在我的项目中,我尝试从 XIB 文件创建自定义 UIView。我遵循了一些教程并得到了下面的代码来加载

import UIKit

class StorePricing: UIView {

override init(frame: CGRect) {

super.init(frame: frame)
self.setupView()
}

required init?(coder aDecoder: NSCoder) {

super.init(coder: aDecoder)
self.setupView()
}

private func setupView() {

let view = self.loadViewFromXib()

view.frame = self.bounds
view.autoresizingMask = [.flexibleHeight, .flexibleWidth]

self.addSubview(view)
}

private func loadViewFromXib() -> UIView {

let bundle = Bundle(for: type(of: self))
let nib = UINib(nibName: String(describing: type(of: self)), bundle: bundle)
let view = nib.instantiate(withOwner: self, options: nil).first as! UIView

return view

}

}

当我在另一个 View 中添加此自定义 View 时,我的应用程序崩溃了,我注意到在无限循环中调用了 init 调用。在我的自定义 View 中调用层次结构如下

  1. 调用初始化编码器
  2. 调用 setupView()
  3. 调用 loadViewFromXib()

nib.instantiate 调用 init coder 并且循环变得不确定

关于如何解决这个问题有什么建议吗?

最佳答案

如果你的 xib 文件包含你的 View 的一个实例,然后它被加载,它将调用 init(coder:),然后它将再次加载 xib 文件,循环将重新开始。我要么从 xib 文件中删除您的 View 实例,要么不从 init(coder:) 中调用 setupView()

关于ios - 带有 XIB 的 CustomView - 初始化编码器方法中的无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45166962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com