Xcode 11 Beta 5中SwiftUI NavigationLink点击无响应问题求助
我刚在Xcode 11 Beta 5 + MacOS Catalina Beta 5环境下碰到过一模一样的问题!不管是自定义的NavigationLink还是官方Landmark示例里的跳转都完全没反应,这确实是该Beta版本的已知bug。
这里有两个靠谱的临时修复方案:
方案1:使用绑定状态手动触发跳转
通过给NavigationLink绑定一个isActive状态变量,用Button来控制这个状态,间接触发页面跳转:
import SwiftUI struct SwiftUIView : View { @State private var shouldNavigate = false var body: some View { NavigationView { VStack { // 用Button触发状态变更 Button(action: { self.shouldNavigate = true }) { Text("Click") } // 隐藏的NavigationLink,通过状态控制跳转 NavigationLink( destination: Product(), isActive: $shouldNavigate ) { EmptyView() } } .navigationBarTitle(Text("Navigation")) } } } #if DEBUG struct SwiftUIView_Previews: PreviewProvider { static var previews: some View { SwiftUIView() } } #endif
方案2:将NavigationLink放入List/Form容器中
在Beta 5中,NavigationLink似乎需要处于可滚动容器(比如List或Form)内才能正常响应点击事件,把你的代码调整成这样就能解决:
import SwiftUI struct SwiftUIView : View { var body: some View { NavigationView { List { NavigationLink(destination: Product()) { Text("Click") } } .navigationBarTitle(Text("Navigation")) } } } #if DEBUG struct SwiftUIView_Previews: PreviewProvider { static var previews: some View { SwiftUIView() } } #endif
这个bug是Beta版本的专属问题,等苹果推送正式版更新后应该就会自动修复了。
内容的提问来源于stack exchange,提问作者Mane Manero
相关产品推荐
相关产品推荐

