Ios 如何在三个视图之间成功创建数据的向下钻取层次结构?
到目前为止,我已经成功地在两个表视图之间创建了数据的向下钻取层次结构。MyIos 如何在三个视图之间成功创建数据的向下钻取层次结构?,ios,swift,uitableview,uicollectionview,Ios,Swift,Uitableview,Uicollectionview,到目前为止,我已经成功地在两个表视图之间创建了数据的向下钻取层次结构。MyfirstTableView具有原始行集,并且firstTableView中的每一行随后都会进入特定于所选firstTableView行的secondTableView数据 为了获得该数据层次结构,我创建了一个名为Sport的类。每个sport对象都有一个sportCategory属性,我将其传递给secondTableView。代码如下: class Sport { var name: String = "s
firstTableView
具有原始行集,并且firstTableView中的每一行随后都会进入特定于所选firstTableView行的secondTableView
数据
为了获得该数据层次结构,我创建了一个名为Sport
的类。每个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]
}()
我的问题是我不知道如何扩展该类以将数据传递给它自己的collectionView。此时,每一行都分为相同的collectionView数据:
因此,我可以使用Swift将数据从firstTableView一直传递到collectionView吗?很难想象当数据只是两级层次结构时,如何向下钻取三级层次结构。让我们建立一个三级层次结构
class Sport {
var name: String = "sport name"
var sportCategories: NSArray = ["variations of selected sport"]
}
假设层次结构很简单(但有3个级别)
所以我们不希望“国际篮球”成为一根弦,我们希望它成为一个物体,就像篮球是
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。您的数据结构只有两层:一个运动数组,保留一个字符串数组(子运动)。要进入UI的第三级,难道不需要三级深度数据吗?这些sub-sport字符串本身需要是对象,它们需要保留一个集合,就像sub-sub-sports一样。我如何制作sub-sports对象,而不仅仅是字符串,以便它们可以容纳自己的集合View@danhhm好的,我明白了,这是有意义的。
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 ]