首页 > 解决方案 > 如何导航到 SwiftUI 设置的新视图

问题描述

在应用程序上工作以显示设备的状态,使用 SwiftUI 按标签分组。我的主视图运行良好,显示了标签列表和相关设备的状态。我可以单击标签并打开一个新视图以显示有关标签的信息和有关设备的一些信息。

我查看了以编程方式导航到 SwiftUI 中的新视图 并得到错误“函数声明了一个不透明的返回类型,但在其主体中没有返回语句来推断底层类型”

class MenuChoice: BindableObject {
  let didChange = PassthroughSubject<MenuChoice, Never>()
  let willChange = PassthroughSubject<MenuChoice, Never>()
  func login() {
    self.isSettingsViewActive = true
  }
  var isSettingsViewActive = false {
    didSet {
      didChange.send(self)
    }
  }
}

struct ViewMain: View {
  @EnvironmentObject var menuChoice: MenuChoice
  var body: some View  {
    if !menuChoice.isSettingsViewActive {
      ViewSettings()
    } else {
      ViewMain2()
    }
  }
}

我希望选项(按钮)导航到: ** 一个高级设置视图,我可以在其中配置整体设置 ** 一个专用于设备信息的视图 ** 一个专用于标签信息的视图

视图有效,但我找不到导航到视图然后从视图返回的方法。

也许 SwiftUI 还没有准备好?

标签: swiftui

解决方案


您需要将 if 语句放入容器中,例如:Group

struct ViewMain: View {
  @EnvironmentObject var menuChoice: MenuChoice
  var body: some View  {
      Group {
         if !menuChoice.isSettingsViewActive {
           ViewSettings()
         } else {
           ViewMain2()
         }
      }
   }
}

推荐阅读