【问题标题】:iOS Swift: Install and Unistall views programmaticallyiOS Swift:以编程方式安装和卸载视图
【发布时间】:2016-10-25 12:59:11
【问题描述】:

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

示例

我的应用程序有一个 StackView,其中包含三个不同的 Views:Character、Starship 和 Vehicle。

现在,我希望在特定条件下,只出现一个视图,而其他两个不会。

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

有什么建议吗?

【问题讨论】:

  • 您的意思是添加和删除吗?
  • 点击视图并点击删除按钮将其删除
  • 加了一张图,你就明白我的意思了

标签: swift xcode uiview


【解决方案1】:

我相信您正在寻找的答案就在这里 - https://stackoverflow.com/a/36712325/2463875

如果您从storyboard安装或卸载视图,相当于添加/删除视图。

【讨论】:

    【解决方案2】:

    我不确定我是否 100% 正确理解它。但如果您想以编程方式将视图添加到堆栈视图,您可以通过以下方式进行。您需要将 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
    

    【讨论】:

      猜你喜欢
      • 2015-08-10
      • 2011-10-12
      • 2012-08-27
      • 1970-01-01
      • 2020-05-01
      • 2017-10-24
      • 1970-01-01
      • 2011-01-03
      • 2014-12-12
      相关资源
      最近更新 更多