2009-12-23 2 views
0

это заставляет меня MAD сейчас .. У меня есть UItableview. Основываясь на NSMutableArray, я заполняю его. Я настроил в reuseTableViewCellWithIdentifier со следующимизменение состояния кнопки в cellForRowAtIndexPath

cellRectangle = CGRectMake((ARROW_OFFSET + 5), (ROW_HEIGHT - LABEL_HEIGHT)/2.0, ARROW_WIDTH, LABEL_HEIGHT); 
UIButton *tmpButton = [[UIButton alloc] initWithFrame:cellRectangle]; 
[tmpButton initWithFrame:cellRectangle]; 
[tmpButton setImage:[UIImage imageNamed:@"icon_edit.png"] forState:UIControlStateNormal]; 
[tmpButton setImage:[UIImage imageNamed:@"icon_no.png"] forState:UIControlStateDisabled]; 
[tmpButton addTarget:self action:@selector(editSelectedRow:) forControlEvents:UIControlEventTouchUpInside]; 
tmpButton.tag = ARROW_TAG; 
[cell.contentView addSubview: tmpButton]; 
[tmpButton release]; 

затем в cellForRowAtIndexPath у меня есть следующие строки кода

UIButton *button = (UIButton *)[cell viewWithTag:ARROW_TAG]; 
[button setTag:indexPath.row]; 

if (counterHasStarted == 1) { 
    NSLog(@"yes"); 
    button.enabled = NO; 
} else { 
    button.enabled = YES; 
} 

кнопка показывает хорошо, но по какой-то причине, когда переменная counterHasStarted (которая является int is set, он не изменяется! Я могу изменить UILabels на основе вышеуказанного кода (проверка, если counterHasChanged равен 1 или 0).

Любые идеи, что происходит?

ответ

2

-cellForRowAtIndexPath: вызывается только тогда, когда для представления таблицы требуется новый UITableViewCell, поскольку пользователь прокручивается.

Я думаю, вы меняете counterHasStarted и ожидаете, что состояние с включенной кнопкой изменится? Вы можете перезагрузить данные при изменении counterHasStarted ([yourTableView reloadData]). Затем представление таблицы вызовет -cellForRowAtIndexPath: для всех ячеек, которые в настоящее время видны, и вы можете включать или отключать кнопки по мере необходимости.

+0

В этом проблема, я звоню [aTableView reloadData] каждую секунду. В каждой ячейке есть таймер, который успешно обновляется ... это просто эта кнопка, которой нет. Должно быть что-то еще в моем коде, останавливая его .... :( –

+0

У меня был другой взгляд на ваш код. Сначала вы извлекаете кнопку с тегом ARROW_TAG, но затем вы меняете тег. Может быть, проблема? Вы меняете тег , и в следующий раз, когда ваш код больше не найдет кнопку? Можете ли вы проверить, что кнопка не равна нулю, перед тем, как вы попытаетесь включить/отключить ее. Если это ниль, тогда button.enabled = YES ничего не сделает, 0: –

+0

спасибо за ответ ... Я думаю, вы его взломали! Я прокомментировал код, чтобы изменить тег для кнопки в каждой строке, и, похоже, Я просто должен теперь подумать о способе обнаружения идентификатора строки, когда нажата конкретная кнопка ... какие-либо идеи? Я ранее использовал button.tag в качестве идентификатора строки, а затем хватал это. –

Смежные вопросы