2011-12-28 3 views
1

Внутри каждого UITableViewCell моего UITableView у меня есть UIScrollView. Вид прокрутки настроен так, что, когда пользователь переместится вправо, появится меню. Это похоже на поведение ячеек в приложении iPhone Twitter. Когда пользователь перебирает другую ячейку, я перебираю все видимые ячейки, чтобы сообщить UIScrollView прокрутить назад содержимое ячейки (т. Е. Ее начальную позицию). Итерация выполняется в методе scrollViewWillBeginDragging со следующим кодом:Стоимость итерации по ячейкам в UITableView

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { 

     if([scrollView tag] == 90) { 

      NSLog(@"Dragging a scroll view inside a cell!"); 

      for (UITableViewCell *cell in self.tableView.visibleCells) { 

       [(UICellContentScrollView *)[cell viewWithTag:90] scrollRectToVisible:CGRectMake(0.0f, 0.0f, 320.0f, [cell frame].size.height) animated:YES]; 

      } 

     } 

    } 

В методе viewDidDisappear я снова перебирать все клетки, чтобы сбросить различные вещи, например, так:

- (void)viewDidDisappear:(BOOL)animated { 
    [super viewDidDisappear:animated]; 


    for(NSUInteger section = 0; section < [[self tableView] numberOfSections]; section++) { 

     for(NSUInteger row = 0; row < [[self tableView] numberOfRowsInSection:section]; row++) { 

      UITableViewCell *cell = [[self tableView] cellForRowAtIndexPath:[NSIndexPath indexPathForRow:row inSection:section]]; 
      // resetting cell here 

     } 

    } 

} 

Мой вопрос, если я (а) идя по этому правильному пути и (б) есть ли у кого-нибудь рекомендации по лучшему решению, учитывая, что табличный вид может содержать 50 (не более 100) элементов.

ответ

1

Ознакомьтесь с документацией NSNotification. Вы можете зарегистрировать все свои объекты UITableViewCell, чтобы получать уведомление, которое вы могли бы назвать чем-то вроде «cellWasSwiped» или «needToResetCells» или что-то еще. Затем, когда вы хотите сбросить ячейки, вы просто публикуете уведомление. Все ваши объекты UITableViewCell, зарегистрированные для его получения, получат уведомление и затем могут вызывать любой метод, который вам нужен.

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