SwiftUi Navigation Bar Button 在进入第三个 View (Controller) 后消失

Pit*_*oas 8 uinavigationcontroller swiftui

我对 SwiftUi 有一个大问题。真正简单的 NavigationView 层次结构中的“后退按钮”在第三个视图中消失了。如果我再看一个视图,返回按钮又出现了,我可以返回。

我搜索了 3 小时,但只找到了这个SwiftUI:单击 NavigationLink 时后退按钮消失

显然这并不能解决我的问题。

谢谢你的帮助!

use*_*533 11

对我来说,问题有点不同 - 只有在与第三个视图交互后,后退按钮才会在第三个视图上消失,例如单击列表视图。

我的解决方法是使用旧的 .navigationBarItems 而不是 .toolbar,所以:

 .navigationBarItems(trailing:
    Menu {
       Button(action: {
          //some action
       }) {
          //some label
       }
       Button(action: {
          //some action
       }) {
          //some label
       }                                        
    }
    label: {
       //some label
    }
 )
Run Code Online (Sandbox Code Playgroud)

代替:

.toolbar {
   ToolbarItem(placement: .navigationBarTrailing) {
      Menu {
         Button(action: {
            //some action
         }) {
            //some label
         }
         Button(action: {
            //some action
         }) {
            //some label
         }                        
      }
      label: {
         //some label
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

  • 我也遇到了同样的错误。但是,虽然使用 navigationBarItems 确实解决了该问题,但此方法已被弃用。该错误还会影响任何使用底部工具栏的尝试。 (3认同)

tit*_*nus 6

另一个似乎正在研究的解决方案Xcode 12.4

ToolbarItem(placement: .navigationBarLeading) {
    HStack {}
}
Run Code Online (Sandbox Code Playgroud)


Lor*_*ngo 5

对于不想使用已弃用方法的人,我找到了另一种解决方法。

只需添加您的.toolbar这个ToolBarItem

.toolbar {

    // ... other toolbar items

    ToolbarItem(placement: .navigationBarLeading) {
        Text("")
    }
}
Run Code Online (Sandbox Code Playgroud)


She*_*ver 5

如果你想让你的代码更干净

/// A ToolbarItem wrapper to work around the back button disappearance bug in SwiftUI 2.
struct NavbarBackButtonDisappearanceWorkaroundItem: ToolbarContent {
    var body: some ToolbarContent {
        ToolbarItem(placement: .navigationBarLeading) {
            Color.clear
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

使用方法如下:

.toolbar {
   NavbarBackButtonDisappearanceWorkaroundItem()
   SomeOtherUsefulItem()        
}

Run Code Online (Sandbox Code Playgroud)


小智 4

我发现问题了!

NavigationView 上的 .toolbar 修饰符以错误的方式隐藏了后退按钮!

  • 我感觉这其实并不能解释太多。您是否发现了有关“错误方式”是什么或为什么会出现这种行为的更多信息? (3认同)

归档时间:

查看次数:

1698 次

最近记录:

4 年,11 月 前