我是iOS新手编程的新手,我遇到了一个我无法弄清楚的奇怪问题。我目前正在尝试按如下方式填充表格。有一个初始屏幕,用户选择类别 - 体育联盟。我使用联赛的名称填充一个字符串数组,然后它将成为表格各部分的标题。联盟名称对应于其他阵列,其中每支球队都在该联盟中,但每个联赛的球队数量不同。这些数组应该填充正确的部分(即每个部分的行数不会是静态的,因为它取决于用户最初选择的联盟)。
我目前在我的numberOfRowsInSection函数中有类似的东西:
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if leagues[section] == "NBA" {
if (!contains(allTeams, nbaTeams[0])) {
allTeams += nbaTeams
}
}
return nbaTeams.count
.
.
.
}
我的每个团队都有多个这样的条款。然后我试图使用我的" allTeams"我的cellForIndexPath函数中的数组,但发生了两件我不想发生的事情。首先,allTeams数组的填充顺序与我的联盟数组的顺序不同,我通过一些打印语句发现在numberOfRowsInSection中发现 - 由于某种原因,section参数从最大的section number开始然后变为0并且开始算起来...很奇怪。其次,这些部分以重复的方式填充。也就是说,第一部分和第二部分都填充了相同的团队(或者用户想要多少部分),尽管它填充的团队数量是正确的(因此numberOfRowsInSection中的return语句是正确的)。
我觉得我对这些来自tableViewDataSource协议的函数缺失了一些东西。我很抱歉,如果这是一口,但我认为这比整个班级更容易阅读。感谢您的任何帮助,您可以提供!另外,如果有更好的方法,请告诉我!
答案 0 :(得分:0)
我明白了!在cellForRowAtIndexPath中,我没有使用allTeams来填充这些部分,而是使用正确的联盟创建了一个常量,并且因为我没有大量的联赛而只使用了几个if语句:
let currentLeague = leagues[indexPath.section]
if currentLeague == "NBA" {
cell.textLabel?.text = nbaTeams[indexPath.row]
}
等