切换SwiftUI中导航栏上的按钮,使其外观更改

时间:2019-08-07 14:49:30

标签: swiftui ios-navigationview

使用SwiftUI,我希望能够基于一些布尔值来更改NavigationView上的按钮,该值指示该值应为打开还是关闭

enter image description here

这与使用UIKit可以替换屏幕两侧的条形按钮项以在单击时显示不同的按钮和相关操作的行为类似。

1 个答案:

答案 0 :(得分:1)

我能够通过以下代码使用它,但是我不确定这是否是实现它的最佳方法,因此有待改进。

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 modifier,它告诉我的界面使更改无效并重新呈现
  • 让我的Button动作修改isOn,如果需要,它还可以支持其他动作
  • 我的Button标签中的三元运算符会更新Text(如果需要,也可以更新Image)以反映正确的外观

最后,它的实际效果:

enter image description here