多节 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)的主要内容,如果未能解决你的问题,请参考以下文章
Firebase 与 Swift 3.0 UITableView