如何使标签栏控制器更新?

时间:2016-01-19 07:15:36

标签: swift uitabbarcontroller

我对swift很新,我目前正在构建一个应用程序,可以显示在影院中播放的电影和电视节目。

最初,我有它,所以标签栏控制器中只有2个标签,它显示最新的电影和最近播出的电视节目。为了增强用户体验,我创建了一个菜单,通过该菜单,用户可以选择4种不同的类别(例如,最受欢迎的电影,新发布的电影,热门电影等)。  我创建了一个数组,以便标签栏控制器知道从何处获取数据以查看电影和电视节目。当用户选择新类别时,阵列会更新,但标签栏控制器不会更新其选项卡。当应用程序重新启动时,选项卡会反映新选择的类别。

我知道如果这是一个tableview,我可以调用tableview.reload(),但我不知道如何为标签栏控制器执行此操作。请帮帮我,并提前致谢!

Here is the link to my project

1 个答案:

答案 0 :(得分:1)

Kevin你可以在appDelegate中创建一个函数,并使tabbar成为rootview控制器

let storyboard = UIStoryboard(name: "Main", bundle: nil)

        let nowPlayingNavigationController = storyboard.instantiateViewControllerWithIdentifier("FlicksNavigationController") as! UINavigationController
        let nowPlayingViewController = nowPlayingNavigationController.topViewController as! MoviesViewController
        nowPlayingViewController.endpoint = "now_playing"
        nowPlayingNavigationController.tabBarItem.title = "YOUR SELECTED TITLE"
        nowPlayingNavigationController.tabBarItem.image = UIImage(named: "popular")
        nowPlayingNavigationController.navigationBar.barStyle = .BlackTranslucent

        let topRatedNavigationController = storyboard.instantiateViewControllerWithIdentifier("FlicksNavigationController") as! UINavigationController
        let topRatedViewController = topRatedNavigationController.topViewController as! MoviesViewController
        topRatedViewController.endpoint = "top_rated"
        topRatedNavigationController.tabBarItem.title = "YOUR SELECTED TITLE"
        topRatedNavigationController.tabBarItem.image = UIImage(named: "topRated")

        topRatedNavigationController.navigationBar.barStyle = .BlackTranslucent

        window?.rootViewController = tabBarController

您可以在该函数中编写此代码并使其成为root viewcontroller并更改标题,

在你的Tabbarviewcontroller.swift中你可以使用postnotification并相应地更新它。