表视图向下钻取

时间:2015-06-22 02:58:50

标签: ios swift uitableview oop

我需要使用我的表视图创建一个向下钻取效果,这将为我的主表视图中的每个原始单元格扩展四个深度表视图。到目前为止,我已成功填充主视图,并使用此面向对象方法相应地进行第二个表视图,这是我的主表视图中的代码:

 class FirstTableViewController: UITableViewController {


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

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

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

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

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

    override func numberOfSectionsInTableView(tableView: UITableView) -> Int {

        return 1
    }

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

        return aSport.count
    }

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
    {
        let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! UITableViewCell
        cell.textLabel?.text = aSport[indexPath.row].name
        return cell
    }

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        let cell = sender as! UITableViewCell
        let row = tableView.indexPathForCell(cell)?.row
        let detail = segue.destinationViewController as! SecondTableViewController
        detail.selectedSport = aSport[row!]
    }


}


class Sport {

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

}

这是我的第二个表视图控制器中的代码:

class SecondTableViewController: UITableViewController {

var selectedSport = Sport();


override func viewDidLoad() {
    super.viewDidLoad()
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()

}


override func numberOfSectionsInTableView(tableView: UITableView) -> Int {

    return 1
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    return selectedSport.sportCategories.count
}


override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("Custom", forIndexPath: indexPath) as! UITableViewCell
    cell.textLabel!.text = selectedSport.sportCategories[indexPath.row] as? String
    cell.detailTextLabel!.text = selectedSport.detailText[indexPath.row] as? String
    return cell
}

}

这是我的模拟器的截图,所以你得到一个视觉:

https://40.media.tumblr.com/6ee47f49c2b223b514f8067c68ac6af1/tumblr_nqbe74HYGo1tupbydo1_500.png

选择篮球时:

https://41.media.tumblr.com/ced0ee2ff111a557ec3c21f1fb765adf/tumblr_nqbe74HYGo1tupbydo2_500.png

现在您可以看到,我能够通过创建自定义类来填充前两个视图,创建该类的自定义对象并使用类中的属性。现在我的困境是,每个“sportCategories”属性都有自己的OWN表视图,这些视图将包含相应运动中的一系列玩家名称。我应该采取什么方法来做这件事?我应该在第二个表视图控制器中创建一个全新的类来为sportsCategories提供自己的属性吗?或者有没有办法可以扩展我已经完成的工作?一种更有效的方式?

0 个答案:

没有答案