Пользовательский UITableViewCell, который расширяется на ощупь и включает в себя поле uitextfield - PullRequest
1 голос
/ 03 октября 2009

Я очень много добавил в свой CustomCell, он отлично работает. Тем не менее, есть одна вещь, которую я не могу решить ..

Мое требование заключается в том, что для сгруппированного TableView при нажатии на одну UITableViewCell она должна развернуться ниже, отчасти анимироваться, развернуться ниже и показать больше информации в этой ячейке.

При нажатии на уже расширенную ячейку она должна вернуться в «нормальное» состояние ячейки.

Было бы замечательно любое направление, которое я мог бы иметь здесь.

также, посмотрите на следующий код, есть переменные для ячейки, и я добавляю изображение в cell.acccessoryVIew, однако, есть несколько примеров, где они пишут код добавления изображения в if (cell == nil) {}.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *kCustomCellID = @"MyCellDetailSym";
    CustomCell *cell = (CustomCell *)[self.tableView dequeueReusableCellWithIdentifier:kCustomCellID];
    if (cell == nil)
    {
        cell = (CustomCell *)[[[CustomCell alloc] initWithFrame:CGRectZero reuseIdentifier:kCustomCellID] autorelease];

    }
    cell.checkNeeded = YES;
    appdelegate *appDelegate = (appdelegate *)[[UIApplication sharedApplication] delegate];
    customClass *nSym = (customClass *)[ArrayCache objectAtIndex:indexPath.row];
    if([appDelegate.sMap containsObject:[NSString stringWithFormat:@"%d",[nSym pKey]]]) { cell.checked=YES; } else cell.checked = NO;
    if([appDelegate.favoriteSymArray containsObject:[NSString stringWithFormat:@"%d",[nSym pKey]]]) { cell.starred=YES; } else cell.starred = NO;
    cell.title = nSym.txtSym;

    UIImage *starredImage = [UIImage imageNamed:@"Star_list_active.png"];
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    CGRect frame = CGRectMake(0.0, 0.0, starredImage.size.width + 5 , starredImage.size.height + 5);
    button.frame = frame;

    UIImage *image = (cell.starred) ? starredImage: [UIImage imageNamed:@"Star_list_inactive.png"];
    //UIImage *newImage = [image stretchableImageWithLeftCapWidth:12.0 topCapHeight:0.0];
    [button setEnabled:YES];
    [button setBackgroundImage:image forState:UIControlStateNormal];
    [button addTarget:self action:@selector(checkButtonTapped:event:) forControlEvents:UIControlEventTouchUpInside];
    button.backgroundColor = [UIColor clearColor];
    cell.accessoryView = button;

    return cell;

}

спасибо, ребята

1 Ответ

0 голосов
/ 12 ноября 2009

Я сделал это, вызвав - (void)insertRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation, указав следующую строку внизу в качестве строки вставки и анимируя с помощью UITableViewRowAnimationTop, чтобы создать эффект раскрывающегося списка. Чтобы завершить иллюзию «расширения» ячейки, убедитесь, что ваш separatorColor соответствует вашему фону.

Не пытайтесь вызывать метод делегата для изменения высоты строки; насколько я могу судить, это не оживит.

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