如何通过Swift在普通班级中创建事件?

时间:2019-04-16 09:45:42

标签: swift uitextfield

我想在一个普通的类中创建一个登录模板,但是在该类中,视图无法调用事件,事件触发时不会打印“ sss”

import UIKit

class ViewController: UIViewController ,UITextFieldDelegate{

    override func viewDidLoad() {
        super.viewDidLoad()
        let loginView=login(view: self.view,controller:self)
        loginView.setView();

    }
}
import UIKit
class login{
    let PassWord=UITextField()
    let view:UIView!
    let controller:ViewController
    init(view:UIView,controller:ViewController){
        self.view=view
        self.controller=controller
    }

    func setView(){
        initPassWord()
        print("1")

    }
    func initPassWord(){
        PassWord.placeholder="PassWord"
        PassWord.addTarget(self, action: #selector(login.exits(_:)), for:.allEvents)
        //PassWord.addTarget(controller, action: #selector(login.exits(_:)), for:.allEvents)
    }
    @IBAction func  exits(_ sender:UITextField){
        print("sss")
    }

1 个答案:

答案 0 :(得分:0)

您需要

var loginView:Login! // hold a strong reference here , start class names with capital letter 

override func viewDidLoad() {
    super.viewDidLoad()
      loginView = Login(controller:self)
      loginView.setView();
}

也使它变弱

weak var controller:ViewController

不要引起保留周期

顺便说一句,您只需要发送控制器,就可以在其中访问其视图