2015-09-23 3 views
1

До сих пор я успешно создал иерархическую иерархию данных между двумя табличными представлениями. Мой firstTableView имеет исходный набор строк, и каждая строка в первомTableView затем переходит в данные secondTableView, специфичные для этой первой строки таблицы TableView.Как мне создать иерархическую структуру данных между тремя представлениями?

Чтобы получить эту иерархию данных, я создал класс под названием Sport. Каждый спортивный объект имел свойство sportCategory, которое я передал во второй TableView. Вот код:

class Sport { 

    var name: String = "sport name" 
    var sportCategories: NSArray = ["variations of selected sport"] 

} 

let aSport:[Sport] = { 
    var basketball = Sport() 
    basketball.name = "Basketball" 
    basketball.sportCategories = { 
     var temp = ["International Basketball","Wheelchair Basketball","Beach Basketball","Deaf Basketball","Dwarf Basketball"] 
     temp.sortInPlace(<) 
     return temp 
     }() 

    var golf = Sport() 
    golf.name = "Golf" 
    golf.sportCategories = { 
     var temp = ["Miniature Golf","Dart Golf","Sholf","Disc Golf","Footgolf"] 
     temp.sortInPlace(<) 
     return temp 
     }() 

    var football = Sport() 
    football.name = "Football" 
    football.sportCategories = { 
     var temp = ["Flag Football","Indoor Football","Arena Football","Non-Tackle Football","Paper Football"] 
     temp.sortInPlace(<) 
     return temp 
     }() 

    var swimming = Sport() 
    swimming.name = "Swimming" 
    swimming.sportCategories = { 
     var temp = ["Competitive Swimming","Synchronized Swimming","Duo Swimming","Relay Swimming"] 
     temp.sortInPlace(<) 
     return temp 
     }() 

    return [basketball,golf,football,swimming] 
    }() 

Теперь вопрос, каждый sportCategory строка из secondTableView должна затем непосредственно перейти в своей собственной CollectionView, со своим собственным набором данных специфических для данного secondTableViewCell выбираемой строки. Таким образом, порядок должен идти

firstTableViewCell -> secondTableViewCell -> collectionView 

Мой вопрос я не знаю, как расширить класс для передачи данных своим собственным CollectionView. На данный момент каждая строка непосредственно переходит в то же данных CollectionView:

Так я могу передать данные из firstTableView, весь путь к CollectionView соответственно, с помощью Swift?

+0

Ваша структура данных имеет только две глубины: массив спортивных состязаний, в котором хранится массив строк (суб-спорт). Чтобы перейти на третий уровень в пользовательском интерфейсе, разве вам не нужны данные с тремя уровнями? Эти суб-спортивные струны должны быть самими объектами, и им необходимо сохранить коллекцию, такую ​​как суб-спорты. – danh

+0

Как я могу сделать объекты вспомогательного спорта, а не просто строки, чтобы они могли разместить свою собственную коллекциюView @ danh –

ответ

1

Трудно представить, как развернуть иерархию уровня 3, когда данные представляют собой только иерархию уровня. Позволяет сделать трехуровневую иерархию ...

class Sport { 
    var name: String = "sport name" 
    var sportCategories: NSArray = ["variations of selected sport"] 
} 

Say иерархия проста (но 3 уровня)

All Sports 
    | 
    | 
    ----Basketball 
     | 
     ---- International Basketball 
        | 
        --- Tibetan Basketball 

Таким образом, мы не хотят «Международный баскетбола», чтобы быть строка, мы хотим это будет объект, как баскетбол ...

var tibetanBBall = Sport() 
tibetanBBall.name = "Tibetan Basketball" 
tibetanBBall.sportCategories = [ ] // this is a leaf. it has no kids 

var internationalBBall = Sport() 
internationalBBall.name = "International Basketball" 
internationalBBall.sportCategories = [ tibetanBBall ] // see? it has kids 

var bBall = Sport() 
bBall.name = "Basketball" 
bBall.sportCategories = [ internationalBBall ] 

Обратите внимание, как sportCategories никогда не массив строк? Он всегда содержит другие объекты Sport. Вот как иерархия может стать сколь угодно глубокой.

Теперь ваша логика: при нажатии на следующий контроллер вида (возможно, на prepareForSegue .. в вопросе не упоминается, как вы начинаете толчок), передайте выбранный вид спорта sportCategories на следующий vc.

+0

hm ok Я вижу, это имеет смысл. –

+0

http://stackoverflow.com/q/34972166/4967536 theres вопрос, который я создал –

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