SwiftUI navigationBarItems:设备旋转时出现“通过属性检测到循环”错误
Posted
技术标签:
【中文标题】SwiftUI navigationBarItems:设备旋转时出现“通过属性检测到循环”错误【英文标题】:SwiftUI navigationBarItems: 'cycle detected through attribute' error on device rotation 【发布时间】:2020-10-20 01:48:33 【问题描述】:我在使用 Xcode 11.5 时收到非常奇怪的错误消息。启用设备旋转支持后,当应用程序以纵向模式启动并且模拟器的屏幕旋转时,我收到一堆错误消息,告诉我“=== AttributeGraph:通过属性 XY === 检测到循环。它只发生在模拟器上,只发生在 iPhone 上,而不是 iPad。此外,如果我删除“navigationBarItems”,则不会出现错误消息。此外,屏幕上的内容看起来不正常(再次仅在模拟器上)。如果我再次旋转,内容如预期。
struct ContentView: View
var body: some View
NavigationView
Text("SwiftUI")
.navigationBarTitle("Welcome")
.navigationBarItems(trailing:
Button("Help")
print("Help tapped!")
)
【问题讨论】:
【参考方案1】:适用于 Xcode 12 / ios 14。作为一种解决方法,您可以尝试对两个方向都使用堆栈导航样式
struct ContentView: View
var body: some View
NavigationView
Text("SwiftUI")
.navigationBarTitle("Welcome")
.navigationBarItems(trailing:
Button("Help")
print("Help tapped!")
)
.navigationViewStyle(StackNavigationViewStyle()) // << here !!
【讨论】:
谢谢!但是,即使使用 StackNavigationStyle,问题仍然存在。也许 Xcode 对我来说已经损坏了?以上是关于SwiftUI navigationBarItems:设备旋转时出现“通过属性检测到循环”错误的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI:当“navigationBarItems”修改列表时,“listRowInsets”无法按预期工作[重复]
你如何在swiftUI中禁用navigationBaritems
SwiftUI 模态演示仅在 navigationBarItems 中有效
SwiftUI 将 navigationBarItems 按钮与“消息”中的大 navigationBarTitle 对齐