我需要为一个UIViewController提供两个不同的选项卡。 我以编程方式实现UITabBarController。
下面的代码就像向我展示两个不同的标签,但是当我选择firstVC时它有黑屏,secondVC是好的。
如何为同一个ViewConetroller使用两个不同的标签?
class VPTabBarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
let myWebView = WebKitViewController.storyboardInstance()
let mainVC = MainViewController.storyboardInstance()
mainVC?.tabBarItem.title = "Search"
mainVC?.tabBarItem.image = UIImage(named:"search")
let firstVC = myWebView
firstVC?.source = "first"
let accountNavigationVC = UINavigationController(rootViewController: firstVC!)
accountNavigationVC.tabBarItem.title = "First"
accountNavigationVC.tabBarItem.image = UIImage(named:"first")
let secondVC = myWebView
secondVC?.source = "second"
let myTripsNavigationVC = UINavigationController(rootViewController: secondVC!)
myTripsNavigationVC.tabBarItem.title = "Second"
myTripsNavigationVC.tabBarItem.image = UIImage(named:"Second")
let viewControllerList = [ mainVC, firstVC, secondVC ]
viewControllers = viewControllerList as? [UIViewController]
}
}
答案 0 :(得分:1)
我想你可以通过创建两个包装器视图控制器来破解它,它们在视图中不包含任何其他内容,只需要在两个选项卡上都有myWebView
的视图。现在创建这个包装器的两个实例,它们都包含与子视图相同的myWebView
。
现在你必须记住,同一个视图不能是两个不同视图的子视图(它只能有一个超级视图)。通过将myWebView.view
作为子视图添加到包装器中,将其从先前的超级视图中删除。因此,您必须监听选项卡更改,以便在呈现包装器时重新添加它(每次呈现包装器时,您必须将myWebView
作为子视图添加到呈现的包装器中)。