2012-05-30 1 views
0

Поскольку AQGridview заимствует много своих идей из UITableView, поэтому я думаю, что ответ должен применяться к обоим.UITableview или AQGridView поддерживают состояние кнопки в ячейке

У меня есть пользовательская ячейка со следующими объектами внутри:

  • этикетки
  • любимой кнопки (может быть включен/выключен пользователем, и я использую .selected = ДА/НЕТ)

Проблема заключается в сохранении состояния кнопки при прокрутке. Ниже приведен мой метод cellForItemAtIndex.

- (AQGridViewCell *) gridView: (AQGridView *) aGridView cellForItemAtIndex: (NSUInteger) index 
{ 
    static NSString * cellIdentifier = @"CellIdentifier"; 

    SampleGridViewCell * cell = (SampleGridViewCell *)[aGridView dequeueReusableCellWithIdentifier:cellIdentifier]; 

    if (cell == nil) 
    { 
     cell = [[SampleGridViewCell alloc] initWithFrame: CGRectMake(0.0, 0.0, 200, 60)         reuseIdentifier: cellIdentifier]; 
    } 

    NSDictionary *item = [self.items objectAtIndex:index]; 

    NSString *title = [item objectForKey:@"title"]; 

    cell.index = index; 

    cell.titleLabel.text = title; 

    //cell.favButton.selected = (logic goes here); 

    return cell; 

} 

Как-то мне нужно, чтобы сохранить ссылку на мой ViewController о том, когда товар был так, что Добавлен в избранное Я могу включить кнопку включения/выключения, когда клетка воссоздан в этом методе.

Я делаю addTarget на cell.favButton с помощью метода в vc? Но как мне получить ссылку на индекс кнопки?

Кто-то реализовал нечто подобное?

ответ

0

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

   NSSet *touches = [event allTouches]; 
       UITouch *touch = [touches anyObject]; 
CGPoint currentTouchPosition = [touch locationInView:tableview]; 
     NSIndexPath *indexPath = [tableview indexPathForRowAtPoint: currentTouchPosition]; 
       NSUInteger row = [indexPath row]; 

Оттуда вы можете сохранить, что кнопка была нажата в существующий набор данных, который используется в самой таблице. Затем, когда таблица загружается и вы извлекаете данные, просто включите/отключите кнопку ячеек на основе данных, которые вы сохранили для этой строки :)