Многосекционный UITableView (Swift) - PullRequest
0 голосов
/ 24 февраля 2020

Я пытаюсь сделать мультисекцию UITableView. Я получаю это, если я только добавляю две строки в свой массив «обзора». Но когда я пытаюсь назвать свой класс "Player" и "Comepetitions", я не заставляю его работать. Я проверил, и оба класса имеют элементы.

//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

    }

}

} How it look

Ответы [ 2 ]

1 голос
/ 25 февраля 2020

Этот код работает!

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

    }
}

}

0 голосов
/ 24 февраля 2020

Я думаю, что это из-за этой строки, она необязательна, и вы должны развернуть ее, но в публикуемом коде нет дополнительной проверки.

var comepetition = [Comepetitions?]()

И не могли бы вы добавить код, который имеет проблемы, потому что с код, который вы публикуете здесь, не означает, что ведьма будет разделом, а ведьмы - это элементы для этого раздела.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...