【问题标题】:SwiftUI programmatically add text or button to a ZstackSwiftUI 以编程方式将文本或按钮添加到 Zstack
【发布时间】:2020-05-19 20:11:01
【问题描述】:

有没有办法以编程方式简单地追加或插入 Text() 或其他视图?诸如单击按钮或在视图上使用轻击手势插入新视图之类的操作?

我以为会是这样的

var body: some View {    
  ZStack{ Text("some text") }.gesture( TapGesture().onChanged(self.add( Text("some new text") )))
}

或类似的东西,但它似乎不受支持,而且我没有找到任何记录在案的方法来插入新项目。如果这不可能,那么动态添加这样的元素的替代方法是什么?只需使用我想要的元素创建一个全新的视图吗?

【问题讨论】:

  • 你能更具体一点,你想添加什么样的视图以及何时添加?
  • 老实说,我所说的几乎都是死的。当我点击屏幕时,我想添加一个 Text() 实例或 TextField()。我了解如何在其中创建带有文本的静态视图,但我只是不明白如何允许用户动态添加/删除它们
  • 那么它是文本还是文本字段?是只有1个还是很多?在 ZStack 中相互添加一堆不同的视图不会看起来很奇怪吗?
  • 让我们坚持使用文本。是的,可能,我只是在学习。效果是能够添加文本,然后将它们在屏幕上拖动到您想要的任何位置。每次点击时,都会添加另一个文本。
  • 哦,你没有提到它们必须是可拖动的,你可能想看看这个gist.github.com/ohayon/83305d9c48e4fc3e7c3851ba10ddc4c9,至于添加新元素你可以像我在下面写的那样添加项目到一个数组。

标签: ios swift xcode swiftui


【解决方案1】:
@State private var myviews = ["some text"]
var body: some View {
  VStack {
    ForEach(myviews, id: \.self) { myview in
        Text(myview)
    }
    Button(action: {self.addview()}) {
                Text("Show details")
    }
 }
    private func addView() {
        self.myviews.append("some new text")
    }
}

这样的?不知道你想要达到什么结果。

【讨论】:

  • 非常感谢。我觉得这很明显,但我是这个工作/应用流程的新手
猜你喜欢
  • 2018-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-19
  • 2021-10-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多