到目前为止,我已成功在两个表视图之间创建了向下钻取的数据层次结构。我的firstTableView
具有原始行集,然后firstTableView中的每一行都会分割成特定于所选第一个TopView行的secondTableView
数据。
为了获得该数据层次结构,我创建了一个名为Sport
的类。每个运动对象都有一个sportCategory
属性,我将其传递给secondTableView。这是代码:
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]
}()
现在的问题是,来自secondTableView的每个sportCategory
行必须转换为自己的collectionView,并且选择了特定于该secondTableViewCell行的自己的数据集。所以订单必须去
firstTableViewCell -> secondTableViewCell -> collectionView
我的问题是我不知道如何扩展类以将数据传递给它自己的collectionView。目前,每一行都分成相同的collectionView数据:
那么我可以使用Swift将数据从firstTableView传递到collectionView吗?
答案 0 :(得分:1)
当数据只是两级层次结构时,很难想象如何向下钻取3级层次结构。让我们做一个三级层次......
class Sport {
var name: String = "sport name"
var sportCategories: NSArray = ["variations of selected sport"]
}
说层次结构很简单(但是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。