Избегайте автоматического изменения размера ячейки в режиме редактирования iPhone - PullRequest
1 голос
/ 20 ноября 2011

У меня проблема с моими пользовательскими ячейками.
Моя ячейка имеет следующую структуру:
enter image description here

Серый вид = cell.contentView
Оранжевый вид = кнопка добавленав качестве подпредставления для contentView
желтый вид = метка, добавленная в качестве подпредставления для contentView
синий вид = вид изображения, добавленный в качестве подпредставления для contentView
зеленый вид = вспомогательное представление

* 1011проблема в том, что когда я переключаю редактирование на tableView, мои ячейки отступают, скрывая вспомогательный вид и перемещаясь вправо ко всему остальному.Я хочу избегать этого.
Когда я переключаю режим редактирования, моя ячейка не должна перемещать свое содержимое, управление редактированием (минус красная кнопка слева) должно занимать место кнопки внутриcontentView и этот последний должен спрятаться.

Я попытался tableView:shouldIndentWhileEditingRowAtIndexPath: метод безуспешно, потому что мой tableView прост.Я также пытался переопределить метод willTransitionToState:, но я не знаю, как делать то, что я хочу.

Может ли кто-нибудь мне помочь?
Большое вам спасибо!

Ответы [ 2 ]

3 голосов
/ 20 ноября 2011

Как вы добавили подпредставления в ячейку?Если вы добавите их непосредственно в ячейку, а не в представление контента, они не будут перемещены.Это вид содержимого, размер которого изменяется, когда ячейка переходит в режим редактирования.

Если вы хотите скрыть определенные подпредставления, вы должны переопределить setEditing:animated: в подклассе ячеек и при необходимости скрыть / показать.

Вам также может понадобиться добавить свои подпредставления так, чтобы они находились ниже contentView в иерархии представлений, или перенести представление контента на верх после того, как вы закончили, используя метод bringSubviewToFront:.

2 голосов
/ 20 ноября 2011

Если вы действительно не хотите изменять размер ячейки, вы можете реализовать -layoutSubviews таким образом:

-(void)layoutSubviews
{
    if ([self isEditing] == NO) {
        // Lay out subviews normally.
    }
}

Когда вы войдете в режим редактирования, -layoutSubviews не будет следовать пути кода, которыйизлагает ваши взгляды.Предполагается, что вы создали подкласс UITableViewCell.

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