我有一个有三个标签的UITabBarController。当按下某个控件时,我希望用户立即看到person视图控制器( ABPersonViewController类的一个实例)。
我不想只使用带有person视图控制器的presentViewController()方法作为参数,因为这会导致延迟,当用户可以看到显示它的底层视图控制器时。
我也不能让视图控制器继承ABPersonViewController,因为它是由苹果设置的,所以不能被子类化。我有办法做到这一点吗?
感谢JAL的回答:
func tabBarController(tabBarController: UITabBarController, shouldSelectViewController viewController: UIViewController) -> Bool {
let navViewController = viewController as! UINavigationController
// First, check to see if the view controller is the one you want to override
if let myViewController = navViewController.viewControllers[0] as? ThirdViewController {
let abpvc = ABPersonViewController()
abpvc.personViewDelegate = self
self.navigationController?.pushViewController(abpvc, animated: true)
return false
}
return true
}发布于 2015-08-18 01:43:08
使用UITabBarDelegate方法shouldSelectViewController
func tabBarController(tabBarController: UITabBarController, shouldSelectViewController viewController: UIViewController) -> Bool {
// First, check to see if the view controller is the one you want to override
if let myViewController = viewController as? ViewControllerToOverride {
// do something here, present a new view controller, etc.
return false // then return false to prevent the tab from switching
}若要选择选项卡栏项(如果使用的是图像),请更改UITabBarItem的image或selectedImage。因为选择选项卡时返回的是false,所以可能需要更改image属性而不是selectedImage。
self.tabBar.items?.first?.image = UIImage(...)https://stackoverflow.com/questions/32001199
复制相似问题