【问题标题】:How to refresh UITabBar after changing viewControllers更改viewControllers后如何刷新UITabBar
【发布时间】:2015-02-22 23:04:35
【问题描述】:

我正在为一个应用实施用户身份验证系统。如果用户已登录,他们将获得一组可供选择的选项卡。如果他们没有登录,他们会得到另一个。现在我遇到的问题是,在用户登录后(应用程序重定向到 safari 到一些 oauth 内容,然后返回应用程序),我从 UITabBarController 更新选项卡,如下所示:

private var accessibleViewControllers = [UIViewController]()

func setUpView() {
    var viewControllersToSet = [UIViewController]()

    if let user = theUser {
        for controller in accessibleViewControllers {
            if !(controller is LogInViewController) {
                viewControllersToSet.append(controller)
            }
        }
    } else {
        for controller in accessibleViewControllers {
            if controller is LogInViewController || controller is HomeNavigator  {
                viewControllersToSet.append(controller)
            }
        }
    }

    setViewControllers(viewControllersToSet, animated: false)
}

现在有趣的是,选项卡图标不会刷新,但我仍然可以单击新图标将链接到关联视图的空间。如何刷新选项卡以显示正确的图标?

【问题讨论】:

标签: ios swift uitabbarcontroller uitabbar


【解决方案1】:

这是一个线程问题。我通过后台线程加载用户数据,然后从同一个后台线程调用委托方法setUpView。为了解决这个问题,我在主队列上运行它:

    dispatch_async(dispatch_get_main_queue()) {
        if self.accessibleViewControllers != nil {
            var viewControllersToSet = [UIViewController]()

            if let user = MediatedUser.shared {
                for controller in self.accessibleViewControllers! {
                    if !(controller is LogInViewController) {
                        viewControllersToSet.append(controller)
                    }
                }
            } else {
                for controller in self.accessibleViewControllers! {
                    if controller is LogInViewController || controller is HomeNavigator  {
                        viewControllersToSet.append(controller)
                    }
                }
            }

            self.viewControllers = viewControllersToSet
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-19
    • 2015-03-17
    • 2015-05-22
    • 1970-01-01
    • 1970-01-01
    • 2013-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多