导航栏一旦隐藏(刷卡)就不会回来

时间:2016-04-09 01:02:47

标签: ios swift uitableview uiviewcontroller uinavigationbar

我在其中创建了一个带有TableView的ViewController,并将其嵌入到NavigationController中。我也设置了约束。在向下滑动时,导航栏会隐藏。一切似乎都很好。

唯一的问题是,在向上滑动时,导航栏无法返回。

如果我使用与TableViewController相同的TableView而不是ViewController(从同一个导航控制器嵌入),导航栏会回来。

对于那些想知道我为什么不去使用TableViewController的人,因为我需要取消选中调整滚动视图插图以解决一些令人不安的 bug

2 个答案:

答案 0 :(得分:1)

要解决此问题,我使用scrollViewWillEndDragging并检测到Going Down& Going Up

func scrollViewWillEndDragging(scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {

   if targetContentOffset.memory.y < scrollView.contentOffset.y {
       // UP
   } else {
       // DOWN
   }
}

答案 1 :(得分:0)

这是我的解决方案,基于对小森的回答:

func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {

    let draggDelta = scrollView.contentOffset.y - targetContentOffset.pointee.y

    let hiddenContentHeight = spreadsheetView.contentSize.height - spreadsheetView.frame.height - 1

    if 0 < draggDelta && targetContentOffset.pointee.y < hiddenContentHeight || (targetContentOffset.pointee.y == 0 && scrollView.contentOffset.y < 0) {

        // Shows Navigation Bar
        navigationController?.setNavigationBarHidden(false, animated: true)
    }
}