Пользовательский макет подпредставления UITableViewCell - PullRequest
2 голосов
/ 17 сентября 2010

Я создаю пользовательский UITableViewCell, похожий по стилю на UITableViewCellStyleValue1, но с редактируемым текстовым полем справа вместо detailTextLabel.Я немного запутался в том, как правильно изменить размер поля редактирования.Я хочу принять во внимание длину textLabel, а также размер contentView, и иметь возможность делать все правильно, когда его табличное представление находится в режиме редактирования или если вспомогательное представление (например,стрелка раскрытия).

Но ширина contentView, кажется, всегда равна 320 (на iPhone в портретном режиме) даже для сгруппированной таблицы.В моем подклассе UITableViewCell я не вижу способа получить доступ к табличному представлению, к которому он принадлежит, поэтому я могу получить стиль таблицы и соответствующим образом настроить поля.

Я думаю, что справлюсь с этим впользовательский способ в методе делегата tableView -tableView:willDisplayCell:forRowAtIndexPath:, но это полностью противоречит цели иметь многократно используемый класс ячеек.

Я, должно быть, упускаю здесь некоторые ключевые концепции, но я в растерянности.Кто-нибудь?

Спасибо!похотливый

Ответы [ 2 ]

6 голосов
/ 17 сентября 2010

Возможно, вы захотите взять под контроль свой макет в подклассе UITableViewCell.Например:

- (void)layoutSubviews
{
    CGRect b = [self bounds];
    b.size.width += 30; // allow extra width to slide for editing
    b.origin.x -= (self.editing) ? 0 : 30; // start 30px left unless editing
    [contentView setFrame:b];
    // then calculate (NSString sizeWithFont) and addSubView, the textField as appropriate...
    // 
    [super layoutSubviews];
}
0 голосов
/ 17 сентября 2010

Я думаю, что поля являются частью ячейки, а не таблицы, поэтому contentView всегда имеет ширину 320. Может быть, я не понимаю вопроса.

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