繁体   English   中英

多节 UITableView (swift)

[英]Multi Section UITableView (swift)

我尝试制作一个多部分UITableView 如果我只将两个字符串添加到我的“概览”数组中,我就可以工作。 但是当我尝试将我的课程称为“玩家”和“竞赛”时,我并没有让它发挥作用。 我已经检查过,两个类都有元素。

//My player and Comepetitions class
var comepetition = [Comepetitions]() //Tävlingar
var players = [Player]()//Spelare

let sections = ["Tävlingar","Spelare"]

//here I want to replace my strings to my classes (player and Comepetitions class)
var overview = [[Player](),[Comepetitions]()] as [Any]

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

func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
    return self.sections[section]

}

func numberOfSections(in tableView: UITableView) -> Int {
    return self.sections.count
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return (overview[section] as AnyObject).count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
             let cell = tableView.dequeueReusableCell(withIdentifier: "ConconfirmCell", for: indexPath)
    cell.textLabel?.text = overview[indexPath.section] as? String

     cell.textLabel?.textColor = UIColor.white
     cell.textLabel?.font = UIFont.boldSystemFont(ofSize: 20.0)
     return cell
}

//All Information how wants to follow the Segue
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

    //Segue for start a new game
    if segue.identifier == "startNewGameSegue" {
        let destVC=segue.destination as! GameViewController
        destVC.competitions = comepetition as [Comepetitions]

        destVC.players = players

    }

}

} 看起来如何

此代码有效!

var comepetition = [Comepetitions]() //Tävlingar
var players = [Player]()//Spelare

let sections = ["Tävlingar","Spelare"]

override func viewDidLoad() {
    super.viewDidLoad()

}

func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
    return self.sections[section]
}

func numberOfSections(in tableView: UITableView) -> Int {
    return self.sections.count
}

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

    if (section == 0) {
        return comepetition.count
    } else {
        return players.count
    }
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
             let cell = tableView.dequeueReusableCell(withIdentifier: "ConconfirmCell", for: indexPath)
      if (indexPath.section == 0) {
    cell.textLabel?.text = comepetition[indexPath.row].comepetitionsOption
      }else{
    cell.textLabel?.text = players[indexPath.row].name
        }
     cell.textLabel?.textColor = UIColor.white
     cell.textLabel?.font = UIFont.boldSystemFont(ofSize: 20.0)
     return cell
}

//All Information how wants to follow the Segue
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

    //Segue for start a new game
    if segue.identifier == "startNewGameSegue" {
        let destVC=segue.destination as! GameViewController
        destVC.competitions = comepetition as [Comepetitions]

        destVC.players = players

    }
}

}

我认为这是因为这一行,它是可选的,你应该打开它,但在你发布的代码中没有可选的检查。

var comepetition = [Comepetitions?]()

您能否添加有问题的代码,因为使用您在此处发布的代码,无法知道女巫将成为部分,而女巫是该部分的项目。

希望这会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM