如何通过 swift 在正常的 class 中创建事件?
How to create a Event in a normal class by swift?
我想在普通class中创建一个登录模板,但是在class中,视图无法调用事件,没有"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")
}
你需要
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
以免引起保留循环
顺便说一句,你只需要发送控制器,然后你就可以访问它的视图
我想在普通class中创建一个登录模板,但是在class中,视图无法调用事件,没有"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")
}
你需要
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
以免引起保留循环
顺便说一句,你只需要发送控制器,然后你就可以访问它的视图