2011-03-14 37 views
0

我試圖用分組表格查看簡單的UIPopover。一切都很好,但第一行是空的,它的數據在最後一行。我的代碼有什麼問題?UITableView創建第一行最後

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
UITableViewCell *cell = nil; 
NSUInteger row = [indexPath row]; 
NSUInteger section = [indexPath section]; 

static NSString *kCellTextField_ID = @"CellTextField_ID"; 
cell = [tableView dequeueReusableCellWithIdentifier:kCellTextField_ID]; 
if (cell == nil) { 
     // a new cell needs to be created 
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault 
            reuseIdentifier:kCellTextField_ID] autorelease]; 
    cell.selectionStyle = UITableViewCellSelectionStyleNone; 
} else { 
    // a cell is being recycled, remove the old edit field (if it contains one of our tagged edit fields) 
    UIView *viewToCheck = nil; 
    viewToCheck = [cell.contentView viewWithTag:kViewTag]; 
    if (viewToCheck) [viewToCheck removeFromSuperview]; 
} 
if (section == 1 && row == 0) { 
    UITextView *textView = [[self.sisalto objectAtIndex: row] valueForKey:kViewKey]; 
    [cell.contentView addSubview:textView]; 
} else { 
    UITextField *textField = [[self.sisalto objectAtIndex: row] valueForKey:kViewKey]; 
    [cell.contentView addSubview:textField]; 
} 
return cell; 
} 
+1

爲什麼當你在兩個方向完全相同時,你需要if的「section」和「row」? – jodm 2011-03-14 13:33:23

+0

@jodm他們不完全一樣。 'UITextView' vs'UITextField' – 2011-03-14 14:09:45

回答

0

我終於明白出了什麼問題。正是這句話:

if (section == 1 && row == 0){ 
    UITextView *textView = [[self.sisalto objectAtIndex: row] valueForKey:kViewKey]; 
    [cell.contentView addSubview:textView]; 
} 

它設置剛剛創建的細胞在數據源(sisalto)第一個值。不經意的是,它應該在數據源中設置第2部分的第一個值。當這被糾正時,一切正常。

0

我可能發現了問題。看下面的代碼。

if (section == 1 && row == 0) { 
    UITextView *textView = [[self.sisalto objectAtIndex: row] valueForKey:kViewKey]; 
    [cell.contentView addSubview:textView]; 
} 

section == 1表明你有兩個部分,你的第二部分的第一項設置爲數組的第一個項目。這可能是它在表格視圖中最後顯示的原因。

+0

謝謝你的回答。你說得對兩部分。應該有兩個組。這不是問題。沒有,如果語句結果完全相同。第一格是最後一格,第一格是空的。我應該提到,如果我翻轉popover和tableview需要重繪,它繪製正確exept最後一個細胞女巫是空的。 – tianyl 2011-03-16 13:40:10

+0

有沒有什麼辦法在視圖繪製開始之前設置indexpath變量。這可能有幫助嗎? – tianyl 2011-03-16 16:22:41