2015-07-10 80 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] 
}