2011-03-14 35 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