UILabel текст перекрывается при обновлении? - PullRequest
5 голосов
/ 02 февраля 2009

В моем приложении я изменяю значение текстовой метки с начального значения 0 и увеличиваю его при событии касания. Иногда, но не всегда, новое значение будет накладываться на 0, что не круто.

Это соответствующий код:

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
UILabel *label = (UILabel *)[cell viewWithTag:1000];
label.text = qtyString;

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

[tableView reloadData];

И это работает лучше, но если я выделю ячейку, а затем прокручиваю ее, когда она выделена, она вылетит на эту ячейку.

Пожалуйста, помогите: (

Ответы [ 6 ]

17 голосов
/ 19 января 2014

проверьте, работает ли у меня "очистка графического контекста", сначала я небрежно отменил выбор ~~

5 голосов
/ 02 марта 2009

Под вашими опциями UILabel ОТКЛЮЧИТЕ 'непрозрачный', это исправит это.

4 голосов
/ 30 ноября 2009

У меня была та же проблема с путаницей текста UILabel, я просто прочитал другие решения, пошел в IB, затем проверил «Очистить контекст перед рисованием», и это решило!

0 голосов
/ 18 июня 2012

В моем случае, изменение Opaque на NO решит проблему обновления UILabel.text Я создаю uilabel в awakeFromNib.

0 голосов
/ 02 мая 2009

imho, лучший способ обойти это - добавить еще:

  UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}else {
    NSArray *cellSubs = cell.contentView.subviews;
    for (int i = 0 ; i < [cellSubs count] ; i++) {
        [[cellSubs objectAtIndex:i] removeFromSuperview];
    }
}

Надеюсь, это поможет.

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

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

  • (CGFloat) tableView: (UITableView *) tableView heightForRowAtIndexPath: (NSIndexPath *) indexPath
    { возврат 80; // возвращает плавающую точку, которая будет использоваться для высоты строки ячейки с указанным индексом строки
    }

Как и я, тогда сделайте высоту метки 80, которая остановит ее.

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