gpt4 book ai didi

swift - 如何在普通类中快速创建事件?

转载 作者:行者123 更新时间:2023-11-30 10:46:17 25 4
gpt4 key购买 nike

我想在普通类中创建一个登录模板,但是在类中, View 无法调用事件,事件触发时不会打印“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

不要导致循环引用

顺便说一句,你只需要发送 Controller ,然后你就可以访问它的 View

关于swift - 如何在普通类中快速创建事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55705205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com