我正在创建一个对象检测应用程序,目前我正在使用它在结果周围生成边界框。我想在每次检测到新对象时都能创建一个按钮,以能够导航到该对象的描述页面。我在View Controller之外的文件中生成观测值,但是在ViewController中创建按钮。我知道标题不是 nil ,但是添加子视图时出现致命错误。 一旦检测到物体,我就会致电:
ViewController().showDetailView(buildingName: String(observationName))
然后在View Controller中运行:
public func showDetailView(buildingName: String){
let detailViewButton = UIButton()
detailViewButton.setTitle(buildingName, for: .normal)
detailViewButton.frame = CGRect(x:0,y:0,width:200,height: 100)
resultView.addSubview(detailViewButton) // error here
_ = Timer.scheduledTimer(withTimeInterval: 10.0, repeats: false) { timer in
detailViewButton.removeFromSuperview()
}
}
------------------------------------------------------------------------
最后,一旦检测到对象,我将收到此错误:
Thread 1: Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value
我已经研究了问题并找到了解决方案(例如确保从情节提要中正确链接了按钮),但是由于我想以编程方式创建按钮,因此它们似乎并不适用。
答案 0 :(得分:0)
如果将showDetailView(buildingName: String)
声明为{p>
resultView
以及致电时
@IBOutlet var resultView: UIView!
尚未创建视图层次结构。
但是由于ViewController().showDetailView(buildingName: String(observationName))
并没有出现在任何地方,因此我不确定您要实现的目标是没有意义的。
确保将ViewController
实例添加到窗口后调用showDetailView
。