在 swift 中重置 hidesBarsOnSwipe

Reset hidesBarsOnSwipe in swift

我必须在哪里以及如何重置 hidesBarsOnSwipe?我在我推送的视图控制器中设置了该选项,并希望为执行推送的视图控制器重置它。到目前为止,我尝试的是在 viewDidDisappear 和推送 ViewController 的 viewDidLoad 中将 hidesBarsOnSwipe 设置为 false

导航栏仍在消失。

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    if (!visiblePOIs.isEmpty) {
        let beaconInfo = visiblePOIs[indexPath.item]
        var controller = storyboard!.instantiateViewControllerWithIdentifier("DetailController")! as! DetailController
        controller.setup(beaconInfo)
        self.parentViewController!.navigationController?.pushViewController(controller, animated: true)
    }
}

细节控制器

override func viewDidLoad() {
    super.viewDidLoad()
    webView.delegate = self
    navigationController?.hidesBarsOnSwipe = true
    self.automaticallyAdjustsScrollViewInsets = false
}

下一个视图控制器写入viewDidload

First Vc

override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
self.navigationController?.hidesBarsOnSwipe = true
}

Second VC
 override func viewWillAppear(animated: Bool) {
 super.viewWillAppear(animated)
 self.navigationController?.hidesBarsOnSwipe = false
 self.navigationController?.setNavigationBarHidden(false, animated:   true)
 }

我希望它的作品

我遇到了你的确切问题。这就是我解决它的方法。 (您可以根据需要进行调整。)

class MyViewController: UITableViewController {            
    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)

        //Correct the nav bar state unwinding from segues
        self.navigationController?.hidesBarsOnSwipe = true
    }

    override func willMoveToParentViewController(parent: UIViewController?) {
        super.willMoveToParentViewController(parent)

        //Toggle the auto-hiding nav bar when this view gets added/removed from the nav controller
        self.navigationController?.hidesBarsOnSwipe = !self.navigationController!.hidesBarsOnSwipe
    }

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        super.prepareForSegue(segue, sender: sender)

        //Reset the nav bar to visible when segueing to another view
        self.navigationController?.navigationBarHidden = false
        self.navigationController?.hidesBarsOnSwipe = false
    }
}

这种方法允许您将自动隐藏功能的功能限制到所需的视图控制器,而无需向所有关联的视图控制器添加代码。