gpt4 book ai didi

swift - 从 nib 加载自定义 UIView 会导致无限循环或抛出 nil 异常

转载 作者:搜寻专家 更新时间:2023-11-01 07:28:25 26 4
gpt4 key购买 nike

我已经创建了一个自定义 View (ImageAndToolBarContainerView),其中包含一个相应的 XIB 文件,我想将该文件加载到我的应用程序中的多个 UIViewController 中。

我一直在寻找如何执行此操作的适当教程,但我遇到的几乎每个教程都太旧或导致重大异常。

当我尝试通过 Storyboard/NIB 加载它时,(我在 Storyboard上的 UIViewController 中创建了一个 View ,并将“Class”属性设置为 ImageAndToolBarContainerView。我设置了 socket ,包括View,但是当类被调用时它们似乎都没有加载,我得到了错误:

fatal error :在展开可选值时意外发现 nil

当我尝试访问 View 时:

required init?(coder aDecoder: NSCoder)
{
super.init(coder: aDecoder)
//setup()
self.view.frame = self.bounds
self.addSubview(view)
}

然后,我尝试使用以下代码来加载 NIB(通过取消注释上面的 setup() 函数。设置代码是这样的:

func setup()
{
self.loadViewFromNIB()
self.view.frame = self.bounds
self.addSubview(view)
}

func loadViewFromNIB() -> UIView
{
let bundle = NSBundle(forClass: self.dynamicType)
let nib = UINib(nibName: "ImageAndToolBarContainer", bundle: bundle)
let view = nib.instantiateWithOwner(self, options: nil)[0] as! UIView
return view
}

这当然会导致无限循环。

我还有以下函数声明:

override func awakeFromNib()
{
super.awakeFromNib()
self.view.frame = self.bounds
self.addSubview(view)
}

我在这里错过了什么?我哪里做错了?是否有关于如何正确执行此操作的权威教程?

最佳答案

无限循环可能是因为您设置了 File's Owner 并将 View 的类子类化为您的 View 的类名。

关于swift - 从 nib 加载自定义 UIView 会导致无限循环或抛出 nil 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34361261/

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