Почему фоновое представление ячейки табличного представления работает хорошо после перехода назад? - PullRequest
0 голосов
/ 26 января 2012

В данный момент я работаю на симуляторе iPhone 5.0. В моем табличном представлении я выбрал uiview для каждого цвета фона ячейки, и у этого представления есть фоновое изображение.

Теперь, моя проблема в том, что моя таблица, содержащая нагрузку контроллера, в - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

Я написал это для фона ячейки таблицы.

cellView = [[[UIView alloc] initWithFrame:CGRectMake(0,8,250, 51)] autorelease];
cellView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"order_text_area.png"]];
cellView.tag =10;
[cellView.layer setOpaque:NO];
cellView.opaque = NO;
[cell.contentView addSubview:cellView];

Для сохранения прозрачности фона я использовал этот код, и он работает, но

[cellView.layer setOpaque:NO];
cellView.opaque = NO;

когда я выбираю ячейку, она отправляется в соответствующий ей контроллер. Теперь моя проблема в том, что когда я возвращаюсь обратно к своему контроллеру табличного представления, фон ячейки не сохраняется в прозрачном представлении, что означает, что представление ячейки не работает с этим кодом. , У меня серьезные проблемы.

ПРИМЕЧАНИЕ, ЧТО * Я хотел сделать снимок экрана, но неожиданно в симуляторе я не столкнулся с этой проблемой. *

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 26 января 2012

у вас есть

[self.tableView reloadData]

в появится?

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

надеюсь, я понимаю вопрос.

0 голосов
/ 26 января 2012

Если вы вносите изменения в фон ячейки непосредственно в своем коде, вероятно, на устройстве происходит следующее: при переходе к следующему экрану таблица ViewView на предыдущем экране выгружается для экономии памяти, а когда Вы возвращаетесь к нему, он перезагружается, и ячейки создаются снова, вызывая ваш tableView: cellForRowAtIndexPath: для каждой ячейки.

Это также объясняет, почему это не происходит в симуляторе, который менее ограничен памятью и поэтому, вероятно, не выгружает представление. Попробуйте смоделировать предупреждение памяти в симуляторе на второй странице, а затем вернитесь к первому виду и посмотрите, не отключена ли ваша ячейка, как на устройстве.

Чтобы эффект сохранялся после перезагрузки представления, вам нужно будет помнить индекс ячейки, который был подсвечен, прежде чем выдвигать новое представление, а затем повторно выделять правильную ячейку в вашем tableView: cellForRowAtIndexPath: метод, когда он повторно -created.

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