gpt4 book ai didi

ios - 在子类中更改 subview 类

转载 作者:行者123 更新时间:2023-11-28 09:27:56 25 4
gpt4 key购买 nike

假设我有一个名为自定义 View 的 UITableViewCell 类,它带有一个类 GenericButton 的按钮,它已在自动布局中以编程方式定义

class View: UITableViewCell {
var button: GenericButton

override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
button = GenericButton()
// blah blah blah constraints
}
}

现在假设我有一个名为 OtherView 的 View 子类,我希望该按钮成为名为 CircleButton 的 GenericButton 的一个子类。

class OtherView: View {
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
button = CircleButton()
}
}

但是,我的 View 仍然显示一个 GenericButton,而不是 CircleButton。我做错了什么?

最佳答案

好的,我已经考虑了几个小时,得出的结论是这可能是最好的答案。

import UIKit

class View: UITableViewCell
{
var button: GenericButton! = nil

required init(coder aDecoder: NSCoder)
{
super.init(coder: aDecoder)
}

override init(style: UITableViewCellStyle, reuseIdentifier: String?)
{
super.init(style: style, reuseIdentifier: reuseIdentifier)
}

convenience init(button: Bool, style: UITableViewCellStyle, reuseIdentifier: String?)
{
self.init(style: style, reuseIdentifier: reuseIdentifier)

if button
{
button = GenericButton()
setConstraint()
}
}

private func setConstraint()
{
// blah blah blah constraints
}
}

class OtherView: View
{
required init(coder aDecoder: NSCoder)
{
super.init(coder: aDecoder)
}

override init(style: UITableViewCellStyle, reuseIdentifier: String?)
{
super.init(style: style, reuseIdentifier: reuseIdentifier)
}

convenience init(button: Bool, style: UITableViewCellStyle, reuseIdentifier: String?)
{
self.init(style: buttonWithStyle, reuseIdentifier: reuseIdentifier)

if button
{
button = CircleButton()
setConstraint()
}
}
}

关于ios - 在子类中更改 subview 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32600578/

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