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

分析するコードがないと何が問題なのかを判断するのは難しいですが、プロパティをcellForRow持つカスタムセルとこのようなものを使用してメソッドにこれを実装できますisMenuOpenedcloseMenu

- (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 に答える