小编jls*_*ert的帖子

创建一个 SwiftUI 侧边栏

我想使用 SwiftUI 构建一个非常简单的 iOS 14 侧边栏。该设置是相当简单,我有三个观点HomeViewLibraryViewSettingsView和枚举代表每个屏幕。

enum Screen: Hashable {
   case home, library, settings
}
Run Code Online (Sandbox Code Playgroud)

我的最终目标是根据大小类在选项卡视图和侧边栏之间自动切换,但有些事情并没有按预期工作。

全局状态由 拥有MainNavigationView,它也是 my 的根视图WindowGroup

struct MainNavigationView: View {
    @State var screen: Screen? = .home
   
    var body: some View {
        NavigationView {
            SidebarView(state: $screen)
        }
        .navigationViewStyle(DoubleColumnNavigationViewStyle())
    }
}
Run Code Online (Sandbox Code Playgroud)

SidebarView是一个简单的List包含三个NavigationLink,每个一个Screen

struct SidebarView: View {
    @Binding var state: Screen?
    var body: some View {
        List {
            NavigationLink(
                destination: HomeView(), …
Run Code Online (Sandbox Code Playgroud)

ios swiftui swiftui-navigationlink

12
推荐指数
1
解决办法
3179
查看次数

从 SwiftUI 中的上下文菜单触发导航

我有一个List包含NavigationLinkNavigationView. 我知道想用ContextMenu包含一个元素的来扩展视图,该元素在我的导航堆栈中显示另一个视图。

struct MainView: View {
    @State var elements = ["Hello", "World"]

    var body: some View {
        NavigationView {
            List(elements, id: \.self, rowContent: { element in
                NavigationLink(destination: PresentView(element: element)) {
                    Text(element)
                        .contextMenu {
                            NavigationLink(
                                "Edit",
                                destination: EditView(element: element)
                            )
                        }
                }
            })
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

正常点击我的项目的导航工作正常。然而,上下文菜单在 Xcode 11 Beta 5 中停止工作。我收到以下错误:`[WindowServer] display_timer_callback:意外状态。

如何从上下文菜单中将新视图推送到我的导航堆栈上?

swiftui

6
推荐指数
1
解决办法
684
查看次数

如果不使用 SwiftUI Lifecycle,则无法将 Scene 方法用于 URL、NSUserActivity 和其他外部事件

我正在使用新的“纯”SwiftUIAppScene结构而不是AppDelegate.

我的一些视图接受自定义 url 方案和使用onOpenURL(perform:). 一切都按预期工作。

但是,从 Beta 6 开始,Xcodes 给出以下运行时警告:

运行时:SwiftUI:不能在不使用 SwiftUI 生命周期的情况下对 URL、NSUserActivity 和其他外部事件使用场景方法。如果没有 SwiftUI Lifecycle,广告和处理外部事件会浪费资源,并且会产生不可预测的结果。

我到底做错了什么?什么是SwiftUI生命周期指什么?


这就是我的主要App结构的样子。我将一些默认修饰符附加到主视图。

@main
struct MyApp: App {
    @StateObject var viewModel = GlobalViewModel()
    
    var body: some Scene {
        WindowGroup {
            MainView()
                .applyingDefaultColors()
                .environmentObject(viewModel)
                .environmentObject(TranslationProvider())
                .toggleStyle(SwitchToggleStyle(tint: .accentColor))
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

swiftui

5
推荐指数
1
解决办法
444
查看次数

标签 统计

swiftui ×3

ios ×1

swiftui-navigationlink ×1