从其他视图控制器快速使用func

时间:2018-09-12 07:26:49

标签: swift

我使用情节提要构建布局。我正在尝试从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)

}

3 个答案:

答案 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被“挂钩”到用户界面。

imageViewfirstViewController是否应该同时显示在屏幕上?

要解决您的问题,您应该将两个secondViewController拖到情节提要中。每个容器视图的自定义类(在身份检查器中)应该分别是firstViewController和secondViewController。

然后,当您在屏幕上时,两个控制器都将被初始化,并且Container View将正确地挂接(“隐式展开的可选”为非零)。 这意味着您将可以安全地调用imageView方法。