我的应用程序我有一个 StackView ,包含三个不同的视图:角色,星舰和车辆。
现在,我希望在某种情况下,只会出现一个视图,而其他两个视图不会出现。
我不是说隐藏和显示,而是安装和卸载。为什么?因为如果我保持我的观点安装我的Xcode崩溃。
任何提示?
答案 0 :(得分:6)
我相信您正在寻找的答案就在这里 - https://stackoverflow.com/a/36712325/2463875
如果您从故事板安装或卸载视图,则相当于添加/删除视图。
答案 1 :(得分:0)
我不确定我是否100%正确理解它..但是如果你想以编程方式向stackview添加视图,你可以通过以下方式实现。您需要将UIStackView连接到ViewController才能访问它。在那里,你可以根据条件添加你的UIViews。
我创建了一个游乐场示例。所以你可以复制它并在游乐场中运行,它也会在视觉上向你展示。为了方便起见,我使用了UILabels。但它与UIViews几乎相同。
import UIKit
import PlaygroundSupport
class TestViewController : UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
title = "Test"
self.view.frame = CGRect(x: 0, y: 0, width: 320, height: 480)
self.view.backgroundColor = UIColor.brown
let stackview = UIStackView(frame: CGRect(x: 0, y: 0, width: 320, height: 480))
stackview.axis = .vertical
stackview.distribution = UIStackViewDistribution.fillEqually
let text = UILabel(frame: CGRect(x: 0, y: 0, width: 100, height: 20))
text.text = "Hello, i am a label"
let condition = true
if condition {
let text2 = UILabel(frame: CGRect(x: 0, y: 0, width: 100, height: 20))
text2.text = "Hello, i am another label"
stackview.addArrangedSubview(text2)
}
stackview.addArrangedSubview(text)
self.view.addSubview(stackview)
}
}
let testController = TestViewController()
PlaygroundPage.current.liveView = testController.view
testController