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

And*_*tto 3 xcode uiview swift

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

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

在此输入图像描述

现在,我想在某种情况下,只会出现一个View而另外两个不会出现.

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

在此输入图像描述

有小费吗?

Avi*_*bat 6

我相信您正在寻找的答案就在这里 - /sf/answers/2569862781/

如果您从故事板安装或卸载视图,则相当于添加/删除视图.


Pri*_*ine 2

我不确定我是否理解它 100% 正确。但是如果您想以编程方式向 stackview 添加视图,您可以按照以下方式进行。您需要将 UIStackView 连接到 ViewController 才能访问它。在那里您可以根据条件添加 UIView。

我创建了一个游乐场示例。因此,您只需复制它并在操场上运行它,它也会以视觉方式向您显示它。为了使它更容易,我使用了 UILabels。但这与 UIView 几乎相同。

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
Run Code Online (Sandbox Code Playgroud)