UITableView создает первую строку до последней - PullRequest
0 голосов
/ 14 марта 2011

Я попытался сделать простой 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 голосов
/ 10 апреля 2011

Я наконец понял, в чем проблема.Это было следующее предложение:

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

Он устанавливает только что созданную ячейку с первым значением в источнике данных (sisalto).Очевидно, что он должен установить первое значение раздела 2 в источнике данных.Когда это исправлено, все работает просто отлично.

0 голосов
/ 14 марта 2011

Я мог бы найти проблему. Посмотрите на следующий код.

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

section == 1 указывает, что у вас есть два раздела, и вы устанавливаете первый элемент второго раздела на первый элемент массива. Возможно, поэтому он отображается последним в вашем табличном представлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...