我有一个 BarCodeScanner-viewController,我从 3 个不同的 View 调用它。我的应用程序还有一个 tabbarController。问题是,在 cameraMode (barCodeScanner) 中,tabbar 从两个 viewController 中隐藏,而第三个总是显示 tabbarController。
我尝试在 viewDidLoad()、viewDidAppear() 和 viewWillAppear() 中设置“self.tabBarController?.tabBar.isHidden = true”,并在 viewWillDisappear() 上将其更改为 false
我还测试过设置 'scanner.hidesBottomBarWhenPushed = true' 但没有结果。
// working:
setUpBackButton(withTitle: NSLocalizedString("button_cancel", comment: ""))
let scanner = BarCodeScanner()
self.navigationController?.pushViewController(scanner, animated: true)
scanner.callback = { result in
// code with result
}
// working:
setUpBackButton()
let scanner = BarCodeScanner()
scanner.modalPresentationStyle = .overCurrentContext
self.navigationController?.pushViewController(scanner, animated: true)
scanner.callback = { result in
// code with result
}
// NOT WORKING (i.e. not hiding the tabbarController):
let scanner = BarCodeScanner()
setupBackButton()
scanner.modalPresentationStyle = .overCurrentContext
self.navigationController?.pushViewController(scanner, animated: true)
scanner.callback = { result in
// code with result
}
我也不想在第三个示例中隐藏标签栏。
最佳答案
使用 Push 实际上在 navigationController 中添加了一个新 Controller ,这就是为什么你的标签栏没有隐藏以使用新 Controller 覆盖隐藏它你需要在 Thrid 示例中使用当前功能更改推送
替换
self.navigationController?.pushViewController(scanner, animated: true)
与
self.navigationController?.present(scanner, animated: true, completion: nil)
关于swift - 打开 CameraController (BarCodeScanner) 时 TabbarController 不隐藏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58728361/