2013-05-30 5 views
0

У меня есть пользовательский UITableViewCell с некоторым расширяющимся меню внутри него. Ячейки с меню выглядит следующим образом:UITableViewCell - повторная компоновка представлений после прокрутки

+--------------+ 
|(>)--(a)--(b) | (cell#1 - expanded) 
+--------------+ 
+--------------+ 
|(<)   | (cell#2 - not expanded) 
+--------------+ 
> = root menu button 
a = expanded item 1 
b = expanded item 2 

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

Проблема в том, что меню в деактивированной ячейке не будет закрываться до тех пор, пока прокрутка стола не будет остановлена. Есть ли способ закрыть меню сразу после удаления ячейки?

Спасибо.

ответ

0

Проблема решена. Мне пришлось использовать «текущий режим NSRunLoop»:

[self performSelector:@selector(animateItemToStartPoint:) 
       withObject:dictionary 
       afterDelay:animation.delayBetweenItemAnimation * x 
       inModes:@[[[NSRunLoop currentRunLoop] currentMode], NSDefaultRunLoopMode]]; 
0

Попробуйте использовать метод -(void)prepareForReuse в вашей ячейке. Here - это описание.

0

Это трудно сказать, что это ваша проблема без кода для анализа, но вы можете реализовать это в методе cellForRow с помощью настраиваемого ячейки с isMenuOpened собственности и closeMenu что-то вроде этого

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString *CellIdentifier = @"Cell"; 
    YourCustomCell*cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[YourCustomCell alloc] initWithStyle:UITableViewCellStyleDefault 
            reuseIdentifier:CellIdentifier]; 
     //perform init setup here or other ops 
    } 
    else { 
     if(cell.isMenuOpened) { 
      [cell closeMenu]; 
     } 
     //do other setup here, set text and other stuffs 
    } 

    return cell 
} 

Предложенный метод по xexe в порядке, когда вы используете изменения свойств света, такие как alpha и свойства, не связанные с контентом, по соображениям производительности.

+0

Это не поможет. Вот видео проблемы: http://www.youtube.com/watch?v=xCR0-DfvkT4 А вот демонстрационный проект: https://dl.dropboxusercontent.com/u/2261256/development/ menuTest.zip – OldFox

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