当创建具有推入新视图的行的列表时,SwiftUI会自动添加一个显示指示器“>”?如果不想,如何将其删除?
NavigationView {
List {
NavigationButton(destination: DetailView()) {
ListItem()
}
}
.navigationBarTitle(Text("Some title"))
}
Run Code Online (Sandbox Code Playgroud)
在UITableViewCell上,您将Accessory设置为None,但是如何在SwiftUI中做到这一点?
paw*_*222 18
您也可以将其放入.background
修饰符中:
List {
Text("Go to...")
.background(NavigationLink("", destination: Text("Detail View")))
}
Run Code Online (Sandbox Code Playgroud)
如果您已经background
在 Text 上有了修饰符,则可以将 Text 包装在 HStack 中并应用于background
HStack。
Imt*_*ath 15
最简单的一种。列表中每个项目的内容。
ZStack {
NavigationLink(destination: DetailView()) {
EmptyView()
}.hidden()
RowView()
}
Run Code Online (Sandbox Code Playgroud)
Ant*_*sov 13
作为解决方法,我可以建议像这样添加 .padding 修饰符:
NavigationView {
List {
NavigationButton(destination: DetailView()) {
ListItem()
}
}
.navigationBarTitle(Text("Some title"))
}
.padding(.trailing, -32.0)
Run Code Online (Sandbox Code Playgroud)
所以你会得到没有可见披露的行:
小智 9
如果您使用列表,您可以做的是将导航链接设置为隐藏,并将其框架宽度设置为零。
HStack{
Button(action: {self.statusShow = 1}, label: {
Image(systemName: "info.circle")
})
NavigationLink(destination: StimulatorSettingView(),
tag: 1,
selection: self.$statusShow){
EmptyView()
}.hidden().frame(width: 0)
}
Run Code Online (Sandbox Code Playgroud)
这对我有用。
从beta 6开始,此方法运行良好:
struct SwiftUIView: View {
var body: some View {
NavigationView {
List {
HStack {
Text("My Cell Content")
NavigationLink(destination: Text("destination"), label: {
EmptyView()
})
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
您不必使用直接NavigationLink
包装您的Label
。只要链接在您的视图层次结构中的任何位置,它就会起作用。
在这里,我将它包装在一个按钮中,它允许您在推动视图之前触发一个动作。由于标签NavigationLink
具有EmptyView
,因此披露指示符不可见。您也可以使用ButtonStyle
.
struct NavigationButton<Destination: View, Label: View>: View {
var action: () -> Void = { }
var destination: () -> Destination
var label: () -> Label
@State private var isActive: Bool = false
var body: some View {
Button(action: {
self.action()
self.isActive.toggle()
}) {
self.label()
.background(NavigationLink(destination: self.destination(), isActive: self.$isActive) {
EmptyView()
})
}
}
}
Run Code Online (Sandbox Code Playgroud)
并使用它:
NavigationButton(
action: { print("tapped!") },
destination: { Text("Pushed View") },
label: { Text("Tap me") }
)
Run Code Online (Sandbox Code Playgroud)
Swift 5,Xcode11。ZStack完美运行。
var body: some View {
NavigationView {
List {
ForEach(viewModel.currenciesViewModel) { cellViewModel in
ZStack {
cellViewModel.makeView()
NavigationLink(destination: ChooseCurrencyListView()) {
EmptyView()
}
.buttonStyle(PlainButtonStyle())
}
}
}
.navigationBarHidden(true)
.navigationBarTitle("", displayMode: .inline)
}
}
Run Code Online (Sandbox Code Playgroud)
设置NavigationLink的宽度并将其隐藏对我有用
List {
ForEach(pages) { page in
HStack {
Text("Something")
NavigationLink(destination: Text("Somewhere")) {
EmptyView()
}
.frame(width: 0)
.opacity(0)
}
}
}
Run Code Online (Sandbox Code Playgroud)
对我来说效果很好!
import SwiftUI
struct LandmarkList: View {
var body: some View {
NavigationView {
List(landmarkData) { landmark in
LandmarkRow(landmark: landmark)
NavigationLink(destination: LandmarkDetail(landmark: landmark)) {
EmptyView()
}
}
.navigationBarTitle(Text("Landmarks"))
}
}
}
struct LandmarkList_Previews: PreviewProvider {
static var previews: some View {
ForEach(["iPhone SE", "iPhone 11 Pro Max"], id: \.self) { deviceName in
LandmarkList()
.previewDevice(PreviewDevice(rawValue: deviceName))
.previewDisplayName(deviceName)
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2805 次 |
最近记录: |