首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PersonViewController in TabBarController

PersonViewController in TabBarController
EN

Stack Overflow用户
提问于 2015-08-14 02:00:32
回答 1查看 604关注 0票数 11

我有一个有三个标签的UITabBarController。当按下某个控件时,我希望用户立即看到person视图控制器( ABPersonViewController类的一个实例)。

我不想只使用带有person视图控制器的presentViewController()方法作为参数,因为这会导致延迟,当用户可以看到显示它的底层视图控制器时。

我也不能让视图控制器继承ABPersonViewController,因为它是由苹果设置的,所以不能被子类化。我有办法做到这一点吗?

感谢JAL的回答:

代码语言:javascript
复制
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
}
EN

回答 1

Stack Overflow用户

发布于 2015-08-18 01:43:08

使用UITabBarDelegate方法shouldSelectViewController

代码语言:javascript
复制
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

}

若要选择选项卡栏项(如果使用的是图像),请更改UITabBarItemimageselectedImage。因为选择选项卡时返回的是false,所以可能需要更改image属性而不是selectedImage

代码语言:javascript
复制
self.tabBar.items?.first?.image = UIImage(...)
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32001199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档