0

私はuitableview の高さの変化のアニメーション化に関するSimon Lee のチュートリアルに従いました。私が直面しているように見える唯一の問題は、複数のセルをタップできることであり、別のセルが既に展開されているかどうかに関係なく、すべてが展開されたままになります。いつでも 1 つだけを展開し、別の展開が既に展開されている場合は、新しい展開が展開される前に閉じられるようにします。

Simon は、「インデックスの配列ではなく、単一の NSIndexPath を現在選択されている項目として保存する」べきだと述べました。これを行う方法が正確にはわかりません。誰かがそれを助けることができれば、それは素晴らしいことです!

4

2 に答える 2

1

tableView:didSelectRowAtIndexPath:あなたがしなければならないことは、行の下のtableViewデリゲートメソッドに以下のコードを追加するだけです

[selectedIndexes setObject:selectedIndex forKey:indexPath]; 

追加するコード

NSArray *key = selectedIndexes.allKeys;
for (int i = 0; i < [key count]; i++) {
    if (![[key objectAtIndex:i] isEqual:indexPath]) {
        [selectedIndexes setObject:[NSNumber numberWithBool:NO] forKey:[key objectAtIndex:i]];
    }
}

幸せなコーディング:) 一日を楽しんでください!!

于 2012-05-15T10:16:04.910 に答える
0

はい、 UITableView -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath および - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath のデリゲート メソッドを使用してセルを折りたたむことができます。 -

最初に変数を宣言して、indexPath を取得します

NSIndexPath *selectedCellIndexPath;

次に、 didSelectRowAtIndexPath でセルの indexPath を取得します:-

 -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
            selectedCellIndexPath=indexPath;

    [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationBottom];
}

次に、折りたたみと拡張を行い、上下の高さを設定します:-

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{  
            if(selectedCellIndexPath != nil  
       && [selectedCellIndexPath compare:indexPath] == NSOrderedSame)  
        return yourCellsExtendedHeightInInteger;  

    return yourCellsCollapsedHeightInInteger;  
}  

または使用

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{    
   if(selectedCellIndexPath && indexPath.row == selectedCellIndexPath .row) 
{         
return 100;    
}    
return 44; 
} 

このチュートリアルも見ることができます:-

于 2012-05-15T10:13:51.057 に答える