navigationBar根在swiftui中缓慢向左滑动时显示导航栏目标

时间:2020-07-14 00:38:57

标签: swiftui

import SwiftUI


struct ContentView: View {
    var body: some View {
        NavigationView {
             NavigationLink(destination: SecondCounter()){
                Text("Show Second Counter View")}
                .navigationBarTitle("RootView")
    }
}
struct SecondCounter : View {
    @State var timer: Timer? = nil
    @State private var secCounter = 0
    
    var body: some View {
        Text("")
            .navigationBarTitle("Second Counter View"      ,displayMode:.inline)
            .navigationBarItems(trailing:Text("\(secCounter)"))
            
            .onAppear {
                self.secondCounter()
            }
        .onDisappear {
            self.timer?.invalidate()
            self.timer = nil
        }
    }
    func secondCounter () {
        timer =  Timer.scheduledTimer(withTimeInterval: 1, repeats: true, block: { _ in
            self.secCounter += 1
        })
    }
}
  struct ContentView_Previews: PreviewProvider { 
      static var previews: some View {
             ContentView()
         }
     }

`当我在swiftui中向左滑动时,为什么我的目标视图navigationBarTitle和NavigationBarItems(trailing)显示在根NavigationBar上,所以我将屏幕向右滑动并看到了根视图,但是我的目标视图项目现在是显示在我的根导航栏上?

如果我快速执行此操作,它将毫无问题地进入根视图,当我缓慢执行时,则出现问题,哦,一切都过去了,默认的后退按钮,标题和结尾的项目都在那里。 我使用的navigationBarTitle字符串var不是私有的,我将其设为私有,现在当我不使用计时器时,navigationBarTitle不会传递到根视图。现在,我正在与一个倒计时计时器进行斗争,因为我在NavigationBarItems尾随了该计时器,并且该计时器变得模糊了,所有条形图都出现在根视图上。

私有var解析是一个错误警报,计数器是问题,当我执行左边缘操作时,我看到更多的根竞争,计数器立即停止,如果我停留在目标视图上,则计时器变为模糊,如果我点击<返回,则根视图将与目标视图的navigationBar一起出现。如果我一直向右走,则根视图看起来很好,没有目标视图栏。 它只会在计时器,计数器工作时发生。

当我开始向左滚动s enter code here时,我看到了根视图,navigationBarItems(trailing),停止升级计数器,但是计时器继续工作,(我在var onBarRighTitle上打印了var,并继续升级),当我停止滚动并停留在目标视图中时,文本将再次接收输出,并且变得模糊。

谢谢

2 个答案:

答案 0 :(得分:0)

我正在使用的navigationBarTitle字符串var不是private,我将其设为私有,现在当我不使用计时器时,navigationBarTitle不会传递到根视图。现在我正在与倒数计时器战斗,因为我有一个navigationBarItems尾随,并且那个变得越来越模糊,并且所有条形都出现在根视图上。 谢谢

答案 1 :(得分:0)

已解决!!! 我使用了IOS 14 .toolbar,并且运行良好。