TabBarController - 为一周中的不同日期多次添加相同的视图?

时间:2015-11-20 06:45:22

标签: ios xcode tabbarcontroller

我想开发一个应用程序,显示周一至周五的一周中的菜单。我设法向控制器添加了五个选项卡,尽管它们显示为五个不同的选项卡。因此,所有标签等都需要添加5次。

显示数据本身的视图始终相同,只是数据本身不同。我只想设计一个视图,添加5次,然后在代码中决定显示哪些数据。

这有可能吗?

解决方案

尝试后,我找到了一个适合我的解决方案。我想要显示五次的ViewController必须有一个标识符。

let controller = (segue.destinationViewController as! UINavigationController).topViewController as! UITabBarController

let storyboard = UIStoryboard(name: "Main", bundle: nil)
var vc_array = [StudiersaalTableViewController]()

for i in 0..<5 {
    let vc = storyboard.instantiateViewControllerWithIdentifier("studiersaalTabBar") as! StudiersaalTableViewController
    vc.currentDay = i
    vc_array.append(vc)
}

var i = 0
for vc in vc_array {
    let title = NSDate.getDayOfWeekAsString(i)
    vc.tabBarItem = UITabBarItem(title: title.substringToIndex(title.startIndex.advancedBy(2)), image: nil, tag: i)
    i++
}
controller.viewControllers = vc_array
controller.selectedIndex = NSDate().getDayOfWeek()

1 个答案:

答案 0 :(得分:0)

使用一个视图控制器子类,其枚举属性包含一周中的日期。假设您的标签栏控制器是根视图控制器,它可能最容易在AppDelegate中创建视图控制器,如下所示:

let mondayVC = WeekViewController(day: .Monday)
let tuesdayVC = WeekViewController(day: .Tuesday)
// etc..

tabBarController.viewControllers = [mondayVC, tuesdayVC]

然后在您的视图控制器子类(WeekViewController或任何您想要调用它)中,您可以设置标签栏项目图像和标题。然后根据它所具有的每周日期属性,您可以确定要显示的信息。