UITableView创建第一行到最后一行

时间:2011-03-14 13:26:22

标签: iphone objective-c ipad uitableview

我尝试使用分组表视图制作简单的UIPopover。一切都很好,但第一行是空的,它的数据在最后一行。我的代码怎么了?

- (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;
 }

2 个答案:

答案 0 :(得分:0)

我可能已经发现了这个问题。请查看以下代码。

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

section == 1表示您有两个部分,并将第二部分的第一个项目设置为数组的第一个项目。这可能就是它在你的表格视图中显示的最后原因。

答案 1 :(得分:0)

我终于弄明白了问题是什么。就是这句话:

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

它在数据源(sisalto)中设置刚刚创建的第一个值的单元格。不经意的是,它应该在数据源中设置第2节的第一个值。如果纠正这一切,一切正常。