我遇到问题
tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController)
委托射击。问题出在我尝试使用self.tabBarController?.selectedIndex并以编程方式更改选项卡时。一旦我使用selectedIndex并返回到上一个选项卡并单击tabBarItem,该委托将不再触发。仅当我不使用selectedIndex时,才会触发该委托,但是一旦使用它,即使我点击tabBar项,didSelect委托也不会再次触发。有什么建议么?感谢您的帮助!
答案 0 :(得分:0)
Tabbar委托仅在用户点击选项卡栏时才响应,而在您的代码以编程方式更改选项卡栏内容时不调用。如果仍然有问题,可以共享一些代码。
答案 1 :(得分:0)
您需要像下面这样以编程方式呼叫代表 例如。我需要选择第四索引处的SettingsTab,我可以使用此代码来实现。在这里,didSelect也以编程方式被调用
if let tabbarC = self.tabBarController{
tabbarC.selectedIndex = 4
let setting = tabbarC.viewControllers![4]
self.tabBarController(tabbarC, didSelect: setting)
}
希望这会有所帮助!
答案 2 :(得分:0)
任何对 UITabBarController
委托 Hero 有问题的人。问题出在 Hero 转换 delegate
上,解决方案是将您的 tabBarController 作为容器放在 ViewController
中。然后在容器上设置Hero,问题解决。
tabBarController.viewControllers = [...]
let container = UIViewController()
container.addChild(tabBarController)
container.view.addSubview(tabBarController.view)
tabBarController.didMove(toParent: container)
tabBarController.view.frame = CGRect(x: 0, y: 0, width: container.view.frame.width, height: container.view.frame.height)
container.modalPresentationStyle = .fullScreen
container.hero.isEnabled = true
container.modalAnimationType = .slide(direction: .left)
rootViewController.present(container, animated: true, completion: nil)