ios - 如何使标签栏项目仅可用于特定目标?
问题描述
我有一个tabBarController
与三个items
不同的viewControllers
。targets
我的项目中有四个,其中一个targets
我想添加一个新tabBar
item
的newViewController
. 当item
我运行另一个时,不应该出现targets
。
首先,我认为这就像将 设置为仅对我想要newViewController
的特定对象可用一样简单,并且如果我在不同的. 但是应用程序崩溃了。target
tabBar
target
有没有办法在不使用代码的情况下隐藏/显示tabBar
item
基于。我们试图在项目中摆脱这种情况。如果可能的话,这样做会很好。如果没有,那么有一个自定义类可用。如果您需要从中查看一些代码,请告诉我。target
#if target
storyBoard
tabBar
解决方案
由于评论部分变得非常混乱,我想我会发布我UITabBarItem
针对不同目标的不同集合的方法的要点。所以首先我创建了一个静态Environment
变量,让我知道哪个目标正在被执行。这是代码:
enum Target {
case targetOne, targetTwo
static var current: Target {
Bundle.main.bundleIdentifier?.contains("targetOneIdentifier") == true ? .targetOne : .targetTwo
}
}
然后在里面UITabBarController
,我viewControllers
根据当前目标设置属性。这是 TabBarController 中的一些代码:
class TabBarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
let bool = Target.current == .targetOne
let targetBasedViewController: UIViewController = bool ? FirstViewController() : SecondViewController()
targetBasedViewController.tabBarItem.title = bool ? "First" : "Second"
targetBasedViewController.tabBarItem.image = UIImage(named: bool ? "First" : "Second")
}
}
注意:这只是我所做的定制的要点。整个事情真的很长,考虑到这种情况真的很难理解。
推荐阅读
- node.js - 在 React 和 NodeJs 中下载时 Zip 文件损坏
- java - Apache Camel:如果出现错误,如何将文件从 preMove 文件夹移回原始文件夹
- python - 当我尝试在 python 中对以下代码使用“for in”时,发生“int”对象不可下标错误
- reactjs - 带挂钩的可折叠卡片
- git - Git工作流程问题-文件未更改的许多合并冲突
- c - 带字符串的c中的内存分配
- python - 如何为降维功能确定自动编码器的隐藏层数和神经元数?
- gcc - 由于“未定义的引用”警告,无法构建 gem5
- automation - 无法使用 Robot Framework 的“输入文本”关键字输入卡号
- python - 正确键入可以返回提供的默认值的函数