2015-11-20 1 views
1

Я хочу разработать приложение, отображающее меню дней недели с понедельника по пятницу. Мне удалось добавить пять вкладок в контроллер, хотя они отображаются как пять разных вкладок. Поэтому все метки и т. Д. Нужно добавлять 5 раз.TabBarController - добавить один и тот же вид несколько раз для разных дней недели?

Вид, который отображает данные, всегда один и тот же, и сами данные отличаются. Я хотел бы создать только один вид, добавить его 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() 

ответ

0

Используйте один подкласс контроллера представления с имуществом перечисления, которое содержит дни недели. Предположим, что ваш контроллер бар Язычок контроллер вид корня, это, вероятно, проще всего создать контроллеры просмотра в AppDelegate, например, так:

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

tabBarController.viewControllers = [mondayVC, tuesdayVC] 

затем в вашем контроллера представления подкласса (WeekViewController или что вы хотите назвать его) вы можно установить изображение и заголовок элемента панели табуляции. и затем, основываясь на том, что имеет свойство дня недели, вы можете определить, какую информацию отображать.

+0

Это не в контроллере корневого представления. Корневой вид представляет собой представление таблицы с несколькими пунктами меню. Если я выберу первый, TabBarController должен отобразить вкладки и их содержимое. Я не совсем уверен, как сделать все это с помощью раскадровки ... Я попытался реализовать код, который вы написали в функции prepareSegue, но, к сожалению, когда я выбираю первую запись в меню, пустой контроллер навигации (или что-то подобное). – Exceen

 Смежные вопросы

  • Нет связанных вопросов^_^