我的 ContentView 包括一个 NavigationView,我通过 NavigationLink 向下钻取到显示列表的 OverviewView,然后通过 NavigationLink 向下钻取到 DetailView。现在我想点击 DetailView 中的文本并调出另一个视图,但是当我现在尝试向该对象添加 NavigationLink 时,我收到一条错误,指出 NavigationLink 需要嵌入到 NavigationView 中,因此我将代码更改为
\n\n NavigationView{ \n ScrollView() { \n VStack{ \n VStack(spacing: -25) { \n HStack(spacing: -25) { \n NavigationLink(destination: WarehouseOrderLinesView(warehouseOrderLines: warehouseOrderLineController.warehouseOrderLines)){ \n TaskSummaryView(title: "Total Lines", color: .blue, icon: "list.dash", value: warehouseOrderLineController.warehouseOrderLines.count) \n } \nRun Code Online (Sandbox Code Playgroud)\n\n但现在由于另一个 NavigationView 中有一个 NavigationView,我最终在顶部有 2 个导航栏。
\n\n\n\n有没有办法使用 NavigationLink 而不将其嵌入到另一个 NaviagationView 中,或者通过不使用 NavigationLink 和 .sheet 之类的东西导航到另一个视图(我不想将新视图显示为模态!)。
\n\n下面是完整的测试示例代码:
\n\n\n// \n// ContentView.swift \n// Two Navbars \n// \n// Created …Run Code Online (Sandbox Code Playgroud) 我有以下几点:
var body: some View {
NavigationView {
VStack {
Text("Hello")
}.navigationBarTitle("Edit Profile", displayMode: .inline)
.background(NavigationConfiguration { nc in
nc.navigationBar.barTintColor = .red
nc.navigationBar.titleTextAttributes = [.foregroundColor: UIColor.black]
})
}.navigationViewStyle(StackNavigationViewStyle())
}
Run Code Online (Sandbox Code Playgroud)
对于导航栏的配置,我有:
struct NavigationConfiguration: UIViewControllerRepresentable {
var configuration: (UINavigationController) -> Void = { _ in }
func makeUIViewController(context: UIViewControllerRepresentableContext<NavigationConfiguration>) -> UIViewController {
UIViewController()
}
func updateUIViewController(_ uiViewController: UIViewController, context: UIViewControllerRepresentableContext<NavigationConfiguration>) {
if let nc = uiViewController.navigationController {
self.configuration(nc)
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是由于某种原因,顶部状态栏被排除在外,并且没有对其应用颜色:
如何将红色也应用于导航栏上方的状态栏,我希望它是相同的颜色。
我试过下面的,但这失败了:
init() {
UINavigationBar.appearance().backgroundColor = .red
}
Run Code Online (Sandbox Code Playgroud) uinavigationbar uinavigationcontroller swift swiftui swiftui-navigationlink
我想删除 NavigationTitle 空间而不删除后退按钮。
我已经尝试过这个:
.navigationBarItems(trailing:
NavigationLink(destination: Preferences(viewModel: viewModel).navigationBarHidden(true)) {
Image(systemName: "gear")
.font(.title2)
}
)
Run Code Online (Sandbox Code Playgroud)
但这也删除了后退按钮。
ios swift swiftui swiftui-navigationlink swiftui-navigationview
我正在 SwifUI 中开发一个跨平台应用程序。在 iPhone / iPad 上,这段代码在 MacOS 上运行得非常好,相反,当我插入 NavigationLink 时,ForecastCardView 被完全切断。当我删除 NavigationLink 时,一切都会正确呈现。
带有导航链接
var FullSection: some View {
LazyVGrid(columns: homeConfigurationUI.columns, alignment: .center, spacing: 20) {
NavigationLink(destination: Text("test")) {
ForecastCardView(viewModel: ForecastCardViewModel.initForTest())
}.frame(width: 300, height: 300, alignment: .center)
}
.border(Color.yellow)
.frame(minWidth: 300, idealWidth: 400, maxWidth: 600, minHeight: 0, idealHeight: 500, maxHeight: .infinity, alignment: .center)
}
Run Code Online (Sandbox Code Playgroud)
没有导航链接
var FullSection: some View {
LazyVGrid(columns: homeConfigurationUI.columns, alignment: .center, spacing: 20) {
ForecastCardView(viewModel: ForecastCardViewModel.initForTest())
}
.border(Color.yellow)
.frame(minWidth: 300, idealWidth: 400, maxWidth: 600, minHeight: …Run Code Online (Sandbox Code Playgroud) macos swiftui swiftui-list swiftui-navigationlink swiftui-scrollview
我遇到这样的问题:更新变量时导航链接会弹出。这有点令人困惑,因为这种行为不会发生在应用程序的其他地方,但我正在做同样的事情。
首先,有一个符合可识别性的 Vehicle 结构。在内容视图中,它显示在滚动视图中的 NavigationView 中。
ScrollView(showsIndicators: false) {
VStack {
ForEach(user.vehicles) { vehicle in
VehicleListItem(user: $user,
vehicle: vehicle)
}
}
}
Run Code Online (Sandbox Code Playgroud)
该列表项有一个导航链接,可将用户带到不同的视图。车辆作为绑定传递到下一个视图。
NavigationLink(destination: {
VehicleView(user: $user,
vehicle: $user.vehicles[user.vehicles.firstIndex(where: {$0.id == vehicle.id})!],
make: vehicle.make,
model: vehicle.model,
year: vehicle.year
)
}, label: {
Image(systemName: "car")
.font(.system(size: 100))
}).padding(.bottom, 20)
Run Code Online (Sandbox Code Playgroud)
在车辆视图中,用户可以编辑车辆信息(品牌、型号、年份)并且工作正常。当用户对车辆进行更改时,它不会弹回之前的视图。
Section() {
VehicleHandler(make: $make, model: $model, year: $year)
Button(action: {
//Update
vehicle.make = make
vehicle.model = model
vehicle.year = year
}, label: {
ButtonView(label: "Update")
}).disabled(make.isEmpty ||
model.isEmpty ||
(make == …Run Code Online (Sandbox Code Playgroud)