我使用情节提要构建布局。我正在尝试从firstViewController
访问secondViewController
中的func,但是当我使用以下代码对其进行访问时,无论如何我总是会得到“线程1:致命错误:意外地发现nil,而展开了一个可选值”我尝试访问什么功能或插座我总是遇到相同的错误。我错过了什么还是做错了吗?
done
位于secondViewController
func done(){
let vc = firstViewController()
vc.drawCircle(locationX: 0, locationY: 0)
}
drawCircle
位于firstViewController
func drawCircle(locationX:CGFloat, locationY: CGFloat) {
let path = UIBezierPath(roundedRect: CGRect(x: locationX, y: locationY, width: radius, height: radius), cornerRadius: 50).cgPath
combinePath.addPath(path)
layer.path = combinePath
if thickness>0{
layer.strokeColor = UIColor(red: rColor, green: gColor, blue: bColor, alpha: 1).cgColor
layer.fillColor = UIColor.clear.cgColor
layer.lineWidth = thickness
}
imageView.layer.addSublayer(layer)
}
答案 0 :(得分:1)
默认构造函数不会从情节提要板(IBOutlet,IBAction等)创建UI组件。
答案 1 :(得分:1)
如果您使用情节提要,请提供一个标识符以查看控制器并使用它:
if(getActivity() != null)
Toast.makeText(getActivity(), "Connection Failure", Toast.LENGTH_LONG).show();
答案 2 :(得分:0)
该问题归因于在函数> npm install dateFormat
中对imageView
的引用,因为这意味着要使其运行,drawCircle
必须完全初始化并在屏幕上显示。 firstViewController
被“挂钩”到用户界面。
imageView
和firstViewController
是否应该同时显示在屏幕上?
要解决您的问题,您应该将两个secondViewController
拖到情节提要中。每个容器视图的自定义类(在身份检查器中)应该分别是firstViewController和secondViewController。
然后,当您在屏幕上时,两个控制器都将被初始化,并且Container View
将正确地挂接(“隐式展开的可选”为非零)。
这意味着您将可以安全地调用imageView
方法。