多节 UITableView (swift)

Posted

技术标签:

【中文标题】多节 UITableView (swift)【英文标题】:Multi Section UITableView (swift) 【发布时间】:2020-02-24 20:28:18 【问题描述】:

我尝试制作一个多部分UITableView。如果我只在我的“overview”数组中添加两个字符串,我就会成功。但是当我尝试称我的班级为“玩家”和“比赛”时,我并没有让它发挥作用。我已经检查过了,两个类都有元素。

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

    


【问题讨论】:

这能回答你的问题吗? UITableView With Multiple Sections 感谢您的建议。现在可以了。 【参考方案1】:

此代码有效!

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

    

【讨论】:

【参考方案2】:

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

var comepetition = [Comepetitions?]()

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

希望这会有所帮助。

【讨论】:

以上是关于多节 UITableView (swift)的主要内容,如果未能解决你的问题,请参考以下文章

多节 UITableView 和 NSArray

在多节 UITableView 中添加行时崩溃

使用情节提要的多节 UITableView

Firebase 与 Swift 3.0 UITableView

从多节 UITableView 中的自定义静态单元格中检索标签文本

在多节表视图中使用文本字段进行搜索 - Swift