Как получить доступ к UIView в ViewController при вызове функции из другого файла? - PullRequest
0 голосов
/ 25 ноября 2018

Ситуация: Я рисую вещи одним нажатием кнопки на подпредставлении.Затем я добавляю подпредставление в представление.

Проблема: При вызове drawNew из другого файла swift, if-loop не запускается.Возможно, потому что view с тегом 777 не найден.

Вопрос: Как мне сказать коду искать view в ViewController?

Когда я вызываю функцию 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() func

//  HandwritingCanvasView.swift

override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {

     ViewController.drawNew()

}

1 Ответ

0 голосов
/ 25 ноября 2018

Будет проще иметь ссылку на newView в ViewController.

Попробуйте сделать следующее

//###########################
//  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
    //...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...