0

我有一个自定义的 UITableViewCell,里面有一些扩展菜单。带有菜单的单元格如下所示:

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

因为单元格被重复使用,我需要关闭菜单(如果它已展开),当单元格出列时,新出列的单元格将出现菜单关闭。

问题是,在表格视图滚动停止之前,出列单元格中的菜单不会关闭。有没有办法在单元格出列后立即关闭菜单?

谢谢。

4

3 回答 3

0

尝试-(void)prepareForReuse在您的单元格中使用方法。是它的描述。

于 2013-05-30T21:06:23.237 回答
0

问题解决了。我不得不使用“当前的 NSRunLoop 模式”:

 [self performSelector:@selector(animateItemToStartPoint:)
              withObject:dictionary
              afterDelay:animation.delayBetweenItemAnimation * x
                 inModes:@[[[NSRunLoop currentRunLoop] currentMode], NSDefaultRunLoopMode]];
于 2013-06-19T15:20:53.460 回答
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

于 2013-05-30T21:35:26.473 回答