gpt4 book ai didi

ios - 如何在子类中重写父类 UIButton 属性?

转载 作者:行者123 更新时间:2023-11-30 10:26:15 27 4
gpt4 key购买 nike

基本上我的问题很简单,我的“DNAParentViewController”UIViewController 中有一个按钮属性,它是:

var doneButton: UIButton = {
let button = UIButton()
button.customizedButtonStyle(title: "Done", bgColor: .clear, titleColor: .white, isBold: false, titleFontSize: 15)
return button
}()

我有 3 个子类,名称为“CharacteristicsViewController”,其他 2 个子类(名称无关紧要)继承“DNAParentViewController”,我想使用 button.addTarget(self, action) 自定义和重写每个 didButton 的点击目标: #selector(goToNext), for: .touchUpInside) 在每个不同子类的 viewDidLoad 中。然而,当我对其中的 3 个执行此操作后,每个 View Controller 中的 goToNext 都没有被触发。

我想要的只是让他们在不同的子类中单击doneButton后去不同的地方,我应该怎么做?谢谢。

这是完整的代码片段,可以轻松查看它们:

DNAParentViewController.swift:

class DNAParentViewController: UIViewController {
var doneButton: UIButton = {
let button = UIButton()
button.customizedButtonStyle(title: "Done", bgColor: .clear, titleColor: .white, isBold: false, titleFontSize: 15)
return button
}()
}

CharacteristicsViewController.swift(另外2个相同):

 class CharacteristicsViewController: DNAParentViewController {

override func viewDidLoad() {
super.viewDidLoad()
customizsGUI()
}

func customizsGUI() {
doneButton.addTarget(self, action: #selector(goToGrowthAreas), for: .touchUpOutside)
}

//MARK: - Action Handlers
@objc func goToGrowthAreas() {
print("lalalalalalalal")
navigationController?.pushViewController(GrowthAreasViewController(), animated: true)
}
}

最佳答案

我认为更好的解决方法是创建一个ExtensionClass。创建一个新的 swift 文件并将其命名为 App+Extensions.swift。现在,一旦创建定义,就为 UIButton 创建了一个扩展。

import UIKit

extension UIButton {
func customizsGUI(vc: UIViewController) {
self.addTarget(self, action: #selector(goToGrowthAreas), for: .touchUpOutside)
}

@objc func goToGrowthAreas(vc: UIViewController) {
print("lalalalalalalal")

vc.navigationController?.pushViewController(GrowthAreasViewController(), animated: true)

}
}

现在,您可以这样调用它:

override func viewDidLoad() {
super.viewDidLoad()
doneButton.customizsGUI(vc: self)
}

这样,您就可以在任何按钮上调用此函数,而不必担心 ParentSub 类。此外,还有一些不同的方式来传递 VC,但它会为您完成任务。

关于ios - 如何在子类中重写父类 UIButton 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60033118/

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