gpt4 book ai didi

ios - 使用输入参数初始化 xib

转载 作者:行者123 更新时间:2023-11-28 05:55:23 26 4
gpt4 key购买 nike

我正在尝试做一个简单的控件来模拟我可以在 xcode 界面设计器中使用的“android 选项卡”。

所以我做了一个简单的 XIB,它有几个界面对象(滚动、堆栈、uiview...),并给了他一个名为“TabsCustomControl”的类

我现在的问题是我应该如何设置/初始化这个 xib/UIView 类。

在我看来,在 xib/自定义 UIView 初始化时将参数传递给它是有道理的,这样它就可以根据选项卡的数量知道选项卡应该具有的大小/颜色/图像。

但我一跑

let tabsCustomControl = Bundle.main.loadNibNamed("TabsCustomControl", owner: self, options: nil)!.first as! TabsCustomControl

我没有机会配置它

tabsCustomControl.tabs = ["first tab"]

它运行 init... 但我仍然没有用选项卡列表 [String] 定义属性,所以现在发生的是代码运行时没有任何关于选项卡的信息。

@IBInspectable var tabs : [String] = []

override init(frame: CGRect) {
super.init(frame: frame)
setup()
}

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

private func setup()
{
// THIS IS Empty, so loop is not running
for _ in tabs {

let newTab = UIButton()
newTab.backgroundColor = UIColor.green
newTab.setTitle("Test", for: .normal)

horizontalStackView.addArrangedSubview(newTab)
}
}

我可以通过在初始化类和设置参数后运行 setup() 函数来解决这个问题,但这看起来很糟糕,因为我会在很多地方使用它......我每次都会被调用 .setup() 困住在我创建 xib 之后

我应该使用什么方法?

最佳答案

也许在 didSet 中运行设置

@IBInspectable var tabs : [String] = [] {
didSet {
setup()
}

这意味着您必须确保在初始化 VC 后设置选项卡

关于ios - 使用输入参数初始化 xib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51632555/

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