如何在 swiftUI 视图中使用按钮? [关闭]
Posted
技术标签:
【中文标题】如何在 swiftUI 视图中使用按钮? [关闭]【英文标题】:How do I use a Button in a swiftUI view? [closed] 【发布时间】:2020-04-24 18:05:43 【问题描述】:如何在 swiftUI 视图中使用按钮?该视图将只包含按钮和一些文本。当按钮被点击时,它将执行一个功能,改变文本中的单词,然后等待另一个按钮点击并重复。我可以使用 UIKit 轻松完成,但使用 swiftUI 按钮似乎比我预期的要复杂。
【问题讨论】:
【参考方案1】:因此,您可以创建一个可以在许多视图上使用的自定义按钮。
/// Custom button that can be used in any view
struct CustomButton: View
// This is the custom method called from other views
var action: () -> ()
var body: some View
VStack
Button(action: self.action() )
Text("Tap me")
然后,您可以在主视图中以这种方式使用它并更改文本。您可以在 changeMyText 方法中添加任何您想要的内容。
// Your main view
struct ContentView: View
// Keep track of the change of a tap
@State private var buttonTapped = false
var body: some View
VStack(spacing: 50)
Text(buttonTapped ? "My second Text" : "My first text")
// Declare your custom button with desired functions
CustomButton(action: self.changeMytext() )
// Method where you perform whatever you need
func changeMytext()
self.buttonTapped.toggle()
【讨论】:
在这个例子中,是什么导致 ContentView 在点击按钮后重新显示?我希望看到类似于 UIKit 的“setNeedsDisplay”的东西,但我没有看到。 ContentView 触发器显示是否有任何变化? ContentView 是一个结构,因此是静态的。触发视图更改的对象是@State。每次“@State”值发生变化时,视图本身都会重新计算应该显示哪些变化,并用新的变化重写自己。与 UIKit 相比,这是一个很大的不同,这就是为什么在 SwiftUI 中你不再需要 ViewController。以上是关于如何在 swiftUI 视图中使用按钮? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何将关闭按钮从 swiftui 视图的主结构(由 uihostingviewcontroller 呈现)分离到它自己的结构?
iOS 16.2 在 SwiftUI 子视图中无法关闭弹出的(sheet)导航视图(NavigationView)之解决
如何在 SwiftUI 中创建共享导航栏以在多个视图之间进行交互? [关闭]