相关疑难解决方法(0)

SwiftUI - 如何关闭工作表视图,同时关闭该视图

我要实现的功能。比如,来自 Apple 的“Look up”视图。

我的目标是当表单视图通过导航推送另一个视图时,用户可以点击导航项按钮来关闭表单视图。就像,这个下面的gif。

在此处输入图片说明

我尝试实现这个功能。

我发现一个问题是当用户点击“完成”按钮时。该应用程序不会关闭工作表视图。它只会将视图弹出到父视图。就像,这个下面的gif。

在此处输入图片说明

这是我的代码。

import SwiftUI

struct ContentView: View {
    @State var isShowSheet = false
    var body: some View {
        Button(action: {
            self.isShowSheet.toggle()
        }) {
            Text("Tap to show the sheet")
        }.sheet(isPresented: $isShowSheet) {
            NavView()
        }
    }
}

struct NavView: View {
    var body: some View {
        NavigationView {
            NavigationLink(destination: NavSubView()) {
                Text("Enter Sub View")
            }
        } .navigationViewStyle(StackNavigationViewStyle())
    }
}

struct NavSubView: View {
    @Environment(\.presentationMode) var presentationMode

    var body: some View {
        Text("Hello")
        .navigationBarItems(trailing:
            Button(action: {
                self.presentationMode.wrappedValue.dismiss() …
Run Code Online (Sandbox Code Playgroud)

navigation dismiss ios swift swiftui

10
推荐指数
2
解决办法
8017
查看次数

如何更改应用程序色调颜色(新 SwiftUI 生命周期应用程序)?

在 SwiftUI 应用程序中更改应用程序色调颜色的最佳方法是什么?

它由新的 SwiftUI 生命周期提供支持,因此我无法选择执行 self.?tintColor

尝试在这里搜索,但没有找到任何在 SwiftUI 生命周期应用程序中执行此操作的方法。

swift swiftui

8
推荐指数
2
解决办法
3895
查看次数

SwiftUI 全局更改环境变量

我已经使用这个想法将主题集成到我的应用程序中

我有一个EnvironmentKey在整个应用程序中使用的:

private struct ColorThemeKey: EnvironmentKey {
    static let defaultValue = Color.Theme.system
//    static let defaultValue = Color.Theme.night
}

extension EnvironmentValues {
    var preferredColorTheme: Color.Theme {
        get {
            return self[ColorThemeKey.self]
        }
        set {
            self[ColorThemeKey.self] = newValue
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

通过更改默认值并重新启动应用程序,它的效果很好。

我是 的新手EnvironmentKey,我正在努力弄清楚如何允许用户更改此设置。我有一个可用主题列表,但如何覆盖当前主题并设置一个将立即接管的新主题?

当我尝试设置这样的新主题时,它告诉我它只能:

let newTheme = theme.theme
Environment(\.preferredColorTheme).wrappedValue = newTheme
Run Code Online (Sandbox Code Playgroud)

environment-variables swift swiftui

5
推荐指数
0
解决办法
5245
查看次数

SwiftUI 如何更改 keyUp macOS 事件的状态?

当从窗口检测到 keyUp 时,我试图更改状态值。但是,它似乎对我不起作用。这是我的代码

/// Window
class Window: NSWindow {
  override func keyUp(with event: NSEvent) {
    (contentView as! NSHostingView<ContentView>).rootView.keyPressed(with: event)
  }
}

/// ContentView
struct ContentView {
  @State var index: Int = 0
  var body: some View { ... }

  func keyPressed(with event: NSEvent) {
    self.index = self.index + 1
  }
}
Run Code Online (Sandbox Code Playgroud)

我用调试器测试了一下,显然keyPressed调用成功,但是索引设置不正确。有谁知道为什么?或者在 macOS 的 SwiftUI 中听键盘的正确策略是什么?

macos ios swift swiftui

3
推荐指数
1
解决办法
626
查看次数