2015-07-10 85 views
0

我是iOS新手,我遇到了一个奇怪的问题,我无法弄清楚。我目前正在试图填充表格如下。有一个用户选择类别的初始屏幕 - 体育联赛。我用联盟的名称填充一个字符串数组,然后它将成为表的各个部分的标题。联盟名称与其他阵列相对应,联盟中的每支球队都有阵容,但每个联盟的球队数量都不相同。这些数组应填充正确的部分(即每部分的行数不会是静态的,因为它取决于用户最初选择的联盟)。正确填充多个部分的UITableView?

我现在有这样的事情在我numberOfRowsInSection功能:

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    if leagues[section] == "NBA" { 
     if (!contains(allTeams, nbaTeams[0])) { 
      allTeams += nbaTeams 
     } 
    } 
    return nbaTeams.count 
. 
. 
. 
} 

我有多个条款一样,我的每个队。然后我试图在我的cellForIndexPath函数中使用我的“allTeams”数组,但有两件事情正在发生,我不想发生。首先,allTeams数组没有按照我的联赛数组的顺序填充,我通过numberOfRowsInSection发现了一些打印语句 - 出于某种原因,节参数从最大节号开始,然后变为0并且开始数起来......奇怪。其次,这些部分以重复的方式填充。也就是说,第一部分和第二部分填充了相同的团队(或者用户需要多少部分),尽管它填充的团队数是正确的(所以numberOfRowsInSection中的返回语句是正确的)。

我觉得我错过了来自tableViewDataSource协议的这些函数的一些东西。对不起,如果这是一个满口,但我认为这比整个班级更容易通读。感谢您的任何帮助,您可以提供!另外,如果有更好的方法,请告诉我!

+0

创建一个表明你的问题的[SSCCE](http://sscce.org)。你是对的 - 我们不想通读你的整个班级,所以你应该创建一个小而完整的示例程序来演示问题。 –

+0

当你说“有一个用户选择类别的初始屏幕”时,是否意味着一旦用户选择了要移动到下一个屏幕的类别? –

+0

为什么要在'numberOfRowsInSection'方法中填充'allTeams'变量?另外,你所有的部分都有相同的行数? – redent84

回答

0

我想通了!在的cellForRowAtIndexPath,而不是使用allTeams填充的章节中,我创建了一个不断用正确的联赛,只是用一对夫妇的if语句,因为我没有一吨的联赛:

let currentLeague = leagues[indexPath.section] 
if currentLeague == "NBA" { 
    cell.textLabel?.text = nbaTeams[indexPath.row] 
}