0

使用SwiftUI,我希望能够NavigationView根据一些 Bool 值更改我的按钮,指示它应该是On还是Off

在此处输入图像描述

这将类似于使用 UIKit 您可以替换屏幕任一侧的条形按钮项以在单击时显示不同的按钮和相关操作。

4

1 回答 1

3

我能够使用以下代码使其工作,但我不确定这是否是实现它的最佳方法,因此我愿意改进。

import SwiftUI

struct HomeList: View {
    @State var isOn = true

    var body: some View {
        NavigationView {
            List(1 ..< 4) { index in
                Text("Row \(index)")
            }
            .navigationBarTitle(Text(verbatim: "Title"), displayMode: .inline)
            .navigationBarItems(trailing:
                Button(action: {
                    self.isOn = !self.isOn
                }, label: {
                    Text(self.isOn ? "On" : "Off")
                })
            )
        }
    }
}

关键部分是:

  • 在我的变量上使用@State 修饰符isOn,它告诉我的界面在更改时无效并重新渲染
  • 如果我需要,让我的Button操作修改isOn&it 还可以支持其他操作
  • Button我标签中的三元运算符更新Text(或Image如果我想要)以反映正确的外观

最后,它在行动中的表现:

在此处输入图像描述

于 2019-08-07T14:49:30.717 回答