从另一个文件调用函数时,如何在ViewController中访问UIView?

时间:2018-11-25 13:38:17

标签: ios swift uiview

情况:我通过在子视图上单击按钮来绘制内容。然后,将子视图添加到视图中。

问题:从另一个快捷文件调用drawNew时,不会触发if-loop。可能是因为找不到带有标签view的{​​{1}}。

问题:如何告诉代码在ViewController中寻找777

何时调用函数view我从另一个文件中调用drawNew()

override func touchesEnded(...)

然后这是我称为//########################### // ViewController.swift //########################### var dv = Painting() // in here are functions to create a cg path // // IBActions // @IBAction func buttonPressed(_ sender: UIButton) { // painting if sender.tag == 1 { drawNew() } else if sender.tag == 2 { CanvasView.clearCanvas() } } // // FUNCTIONS // func drawNew() { dv.makeMeSomePath() if let foundView = view.viewWithTag(777) { // problem lies here maybe dv.tag = 111 foundView.addSubview(dv) print("added subview") } } override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) // prepare the canvas for let newView = CharacterView(frame: CGRect(x: 0, y:0, width: HandwritingCanvasView.frame.width, height: HandwritingCanvasView.frame.height)) newView.tag = 777 HandwritingCanvasView.addSubview(newView) // self.view.addSubview(demoView) } 函数的另一个文件

drawNew()

1 个答案:

答案 0 :(得分:0)

在ViewController中的newView上进行引用会更容易。

尝试下一步

//###########################
//  ViewController.swift    
//###########################
weak var subView: UIView? //Add reference on your view

//
// FUNCTIONS
//
func drawNew() {
   dv.makeMeSomePath()
   if let foundView = subView { // Use the reference instead of searching view with tag
       dv.tag = 111
       foundView.addSubview(dv)
       print("added subview")
   }
 }


override func viewDidAppear(_ animated: Bool) {
    // Your code is here
    // ...
    HandwritingCanvasView.addSubview(newView)
    subView = newView
    //...
}