iOS Swift:以编程方式安装和卸载视图
Posted
技术标签:
【中文标题】iOS Swift:以编程方式安装和卸载视图【英文标题】:iOS Swift: Install and Unistall views programmatically 【发布时间】:2016-10-25 12:59:11 【问题描述】:如何以编程方式安装和卸载视图?
示例
我的应用程序有一个 StackView,其中包含三个不同的 Views:Character、Starship 和 Vehicle。
现在,我希望在特定条件下,只出现一个视图,而其他两个不会。
我不是说隐藏和显示,而是安装和卸载。为什么?因为如果我保持我的观点安装我的 Xcode 崩溃。
有什么建议吗?
【问题讨论】:
您的意思是添加和删除吗? 点击视图并点击删除按钮将其删除 加了一张图,你就明白我的意思了 【参考方案1】:我相信您正在寻找的答案就在这里 - https://***.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
【讨论】:
以上是关于iOS Swift:以编程方式安装和卸载视图的主要内容,如果未能解决你的问题,请参考以下文章