Sco*_*her 10 conditional-statements ios swiftui
鉴于我有这样的看法..
@State var tabIndex: Int = 0
var body: some View {
TabView(selection: $tabIndex)
{
Text("Tab 1").tabItem({
Image(systemName: "message")
}).tag(0)
Text("Tab 2").tabItem({
Image(systemName: "arkit")
}).tag(1)
Text("Tab 3").tabItem({
Image(systemName: "battery.100")
}).tag(2)
}.navigationBarTitle("Tabbed View")
}
Run Code Online (Sandbox Code Playgroud)
这会产生一个这样的视图,这是预期的:
在我可以使用的栏中添加导航按钮
.navigationBarItems(trailing:
Button(action: {print("Button was tapped")}) {
Image(systemName: "plus")
.resizable().frame(width: 20, height: 20)
})
Run Code Online (Sandbox Code Playgroud)
按预期添加按钮
有没有办法只根据条件添加(或显示)按钮?
if (self.tabIndex == 1){
show button
}
else {
don't show button
}
Run Code Online (Sandbox Code Playgroud)
sal*_*t5r 21
由于.navigationBarItems
在 iOS 的未来版本中将被弃用,因此最好使用.toolbar(_:)
视图修改器。
.toolbar {
ToolbarItemGroup(placement: .navigationBarTrailing) {
if tabIndex == 2 {
// show button
}
}
}
Run Code Online (Sandbox Code Playgroud)
Asp*_*eri 16
这是可能的方法
.navigationBarItems(trailing: self.tabIndex == 1 ?
AnyView(self.trailingButton) : AnyView(EmptyView()))
Run Code Online (Sandbox Code Playgroud)
下面某处 body
var trailingButton: some View {
Button(action: {print("Button was tapped")}) {
Image(systemName: "plus")
.resizable().frame(width: 20, height: 20)
}
}
Run Code Online (Sandbox Code Playgroud)
如果您不想使用AnyView
,也可以使用Group
or Opacity
。
.navigationBarItems(trailing: Group {
if self.tabIndex == 1 {
Button(action: {print("Button was tapped")}) {
Image(systemName: "plus")
.resizable().frame(width: 20, height: 20)
}
}
})
Run Code Online (Sandbox Code Playgroud)
.navigationBarItems(trailing:
Button(action: {print("Button was tapped")}) {
Image(systemName: "plus")
.resizable().frame(width: 20, height: 20)
}.opacity(self.tabIndex == 1 ? 1 : 0)
)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3075 次 |
最近记录: |