我要实现的功能。比如,来自 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) 在 SwiftUI 应用程序中更改应用程序色调颜色的最佳方法是什么?
它由新的 SwiftUI 生命周期提供支持,因此我无法选择执行 self.?tintColor
尝试在这里搜索,但没有找到任何在 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) 当从窗口检测到 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 中听键盘的正确策略是什么?