iPhone: изменить ячейку, выбранную в didSelectRowAtIndexPath - PullRequest
5 голосов
/ 27 апреля 2011

У меня есть таблица с записями, которые пользователь может выбрать, и при нажатии на них UILabel должна превратиться в UITextField, чтобы пользователь мог редактировать значение этой строки.

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(indexPath.section == 1 &&
       indexPath.row < [item.entries count])
    {
        ListDetailCell *tmpCell = ((ListDetailCell*)[self tableView:tvEntries cellForRowAtIndexPath:indexPath]);
        tmpCell.lbTitle.hidden = true;  // <- cell to hide
        tmpCell.tfTitle.hidden = false; // <- textfield to show
    }
}

По любым причинам кажется, что мои изменения в элементах управления не применяются.

Здесь есть какие-нибудь намеки? Спасибо заранее

Ответы [ 2 ]

7 голосов
/ 27 апреля 2011

Вы пытались позвонить reloadRowsAtIndexPaths:withRowAnimation: после применения ваших обновлений? Как:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(indexPath.section == 1 &&
       indexPath.row < [item.entries count])
    {
        ListDetailCell *tmpCell = ((ListDetailCell*)[self tableView:tvEntries cellForRowAtIndexPath:indexPath]);
        tmpCell.lbTitle.hidden = true;  // <- cell to hide
        tmpCell.tfTitle.hidden = false; // <- textfield to show

        //reload the cell
        [tableView reloadRowsAtIndexPaths: [NSArray arrayWithObject: indexPath]
         withRowAnimation: UITableViewRowAnimationNone];
    }
}

Как правило, обновления, внесенные в отображаемую ячейку, не появятся, если вы явно не скажете таблице перезагрузить эту ячейку (или перезагрузить все, вызвав reloadData.

0 голосов
/ 29 апреля 2011

Мое решение было, наконец, вставить дополнительный флаг, который говорит мне, в режиме я или нет.В cellForRowAtIndexPath я проверяю этот флаг и устанавливаю видимость Label / Textfield.

Не совсем правильный путь, но это избавило меня от необходимости уделять больше времени этой теме.

Спасибо за ваши предложения.

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