2013-07-07 2 views
0

Я создал пользовательскую ячейку и добавил на нее uibutton. При нажатии этой кнопки Im установит эту кнопку, которая изменит изображение кнопки.Изменение содержимого одной ячейки изменяет другие ячейки, а также в UITableView

-(IBAction)btnInfoPressed:(id)sender 
{ 
    [btnInfo setSelected:YES]; 
} 

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

Вот мой метод cellforrowatindexpath:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
static NSString *cellIdentifier = @"CustomCell"; 
CustomCell *c = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 

if (c == nil) 
{ 
    c = [[[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil] objectAtIndex:0]; 
} 
c.selectionStyle = UITableViewCellSelectionStyleNone; 
return c; 
} 

Любые идеи, что должно быть сделано по этому поводу?

+0

Показать метод '[btnInfo setSelected: YES]'. – Geek

+0

Свойство UIButton по умолчанию для изменения своего состояния от Normal до выбранного или возврата в нормальное состояние. – iAmd

+0

Тогда вы не должны использовать '[sender setSelected: YES]'? – Geek

ответ

3

(Из моих комментариев выше: Вы не можете использовать ячейку для хранения состояния строки, потому что ячейки повторно используются. В представлении таблицы выделяется только конечное число ячеек. Если вы прокрутите вниз, dequeueReusableCellWithIdentifier вернет одну из существующих ячеек, которые стали невидимыми. Поэтому вам необходимо сохранить состояние строки в источнике данных, а обновить полное состояние ячейки (включая состояние кнопки) в cellForRowAtIndexPath.