iOS Swift:以编程方式安装和取消浏览视图

时间:2016-10-25 12:59:11

标签: swift xcode uiview

如何以编程方式安装和卸载视图?

实施例

我的应用程序我有一个 StackView ,包含三个不同的视图:角色,星舰和车辆。

enter image description here

现在,我希望在某种情况下,只会出现一个视图,而其他两个视图不会出现。

我不是说隐藏和显示,而是安装和卸载。为什么?因为如果我保持我的观点安装我的Xcode崩溃。

enter image description here

任何提示?

2 个答案:

答案 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