swift - 打开 CameraController (BarCodeScanner) 时 TabbarController 不隐藏
问题描述
我有一个 BarCodeScanner-viewController,我从 3 个不同的视图中调用它。我的应用程序也有一个 tabbarController。问题是,tabbar 隐藏在两个 viewController 中,而第三个总是显示 tabbarController,而在 cameraMode (barCodeScanner) 中。
我尝试在 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 中添加了一个新控制器,这就是为什么您的标签栏没有隐藏以使用新控制器覆盖隐藏它的原因,您需要在 Thrid 示例中使用现有功能更改 push
代替
self.navigationController?.pushViewController(scanner, animated: true)
和
self.navigationController?.present(scanner, animated: true, completion: nil)
推荐阅读
- jquery - 动态重新加载表时,列样式未呈现
- python - 根据相同的 x 值绘制两个不同长度的 matplotlib 列表
- azure-active-directory - 自定义 AAD 身份验证逻辑
- javascript - 在材质 UI 中使用 withWidth HOC
- c# - 是否有可能更改 DataGridRowGroupHeader 控件的内容?
- c++ - 给定代码不适用于给定问题
- java - 降低java中大整数问题的时间复杂度
- c# - 有没有办法将数组拆分为 X 大小的列表?
- android - 在列表视图中按位置编辑项目
- jquery - 如何使用 JQuery 从树枝变量中获取值?