Ios 如何在三个视图之间成功创建数据的向下钻取层次结构?

Ios 如何在三个视图之间成功创建数据的向下钻取层次结构?,ios,swift,uitableview,uicollectionview,Ios,Swift,Uitableview,Uicollectionview,到目前为止,我已经成功地在两个表视图之间创建了数据的向下钻取层次结构。MyfirstTableView具有原始行集,并且firstTableView中的每一行随后都会进入特定于所选firstTableView行的secondTableView数据 为了获得该数据层次结构,我创建了一个名为Sport的类。每个sport对象都有一个sportCategory属性,我将其传递给secondTableView。代码如下: class Sport { var name: String = "s

到目前为止,我已经成功地在两个表视图之间创建了数据的向下钻取层次结构。My
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 ]