11

クリックでテーブルビューセルを展開したい。2 つのセルが展開可能で、他のセルが展開できないテーブルビューがあります。拡張可能なセルをクリックすると、その下にセルが表示され、もう一度クリックすると非表示になる必要があります。これを定義する下の画像があります。

ここに画像の説明を入力

この機能を実現するにはどうすればよいですか。上記のガイドを参照してください。前もって感謝します。

4

7 に答える 7

12

Expandable UITableView を使用した完全なチュートリアルは次のとおりです

そのためのコード スニップを次に示します。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if ([self tableView:tableView canCollapseSection:indexPath.section])
    {
        if (!indexPath.row)
        {
            // only first row toggles exapand/collapse
            [tableView deselectRowAtIndexPath:indexPath animated:YES];

            NSInteger section = indexPath.section;
            BOOL currentlyExpanded = [expandedSections containsIndex:section];
            NSInteger rows;

            NSMutableArray *tmpArray = [NSMutableArray array];

            if (currentlyExpanded)
            {
                rows = [self tableView:tableView numberOfRowsInSection:section];
                [expandedSections removeIndex:section];

            }
            else
            {
                [expandedSections addIndex:section];
                rows = [self tableView:tableView numberOfRowsInSection:section];
            }

            for (int i=1; i<rows; i++)
            {
                NSIndexPath *tmpIndexPath = [NSIndexPath indexPathForRow:i 
                                                               inSection:section];
                [tmpArray addObject:tmpIndexPath];
            }

            UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

            if (currentlyExpanded)
            {
                [tableView deleteRowsAtIndexPaths:tmpArray 
                                 withRowAnimation:UITableViewRowAnimationTop];

                cell.accessoryView = [DTCustomColoredAccessory accessoryWithColor:[UIColor grayColor] type:DTCustomColoredAccessoryTypeDown];

            }
            else
            {
                [tableView insertRowsAtIndexPaths:tmpArray 
                                 withRowAnimation:UITableViewRowAnimationTop];
                cell.accessoryView =  [DTCustomColoredAccessory accessoryWithColor:[UIColor grayColor] type:DTCustomColoredAccessoryTypeUp];

            }
        }
    }
}

下の写真のように

ここに画像の説明を入力

これこの1 つのソリューションは、Expandable TableView の管理方法を理解するのにも役立ちます

于 2013-02-27T10:11:40.210 に答える
4

さて、私が考えているのは、タイトル、イベントオーバーヘッド、およびフレンズUIViewは、UIImageView背景、UILabelタイトル、および展開のカスタムUIButtonです。だから基本的に

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

あなたが持っているタイトルのリターンカウントを持っています。

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section

UIViewタイトルごとにリターンあり。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

そのタイトル内の行数を持っています。このために配列を維持する必要があるかもしれません。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;

セル項目の高さ

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section

最初はすべてのセクションで 0 (ゼロ) にする必要があります。ユーザーが展開をタップすると、そのセクション内の行数 * セルの高さに関して増加する必要があります。

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

すべての行を拡張用に設定するには、適切なロジックが必要になる場合があります

拡張ボタンのアクションは次のようになります。

- (void) expandSection:(UIButton *)sender;

sender.tag を使用して展開するセクションを特定できるため、タグを適切に追加することを忘れないでください。int現在のセクションを保存するための.hファイルが必要な場合があり、- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)sectionデータソース メソッドで使用できます。

于 2013-02-27T11:09:16.693 に答える
3

あなたが望むものはすでにAppleによって与えられていると思います。Table View Animations and Gesturesというタイトルで、Apple が提供するサンプル コードを確認できます。

于 2013-02-27T10:07:21.517 に答える
2

JKExpandTableViewは、展開可能なテーブル ビューを実装する MIT ライセンスの iOS ライブラリです。同梱のサンプルプロジェクトも必ずチェックアウトしてください。

スクリーンショット

于 2013-07-26T05:36:29.273 に答える
2

以下にソースコードの例を示します。この例は、要件に基づいてカスタマイズできます。

ソースコードのリンク :ここをクリック

出力画面:

ここに画像の説明を入力

于 2013-05-29T12:28:09.780 に答える
0

受け入れられた答えは真実ですが、リンクは古くなっています。その例を機能させるには、追加のことを行う必要があります。

ここから ExpandableTableCells プロジェクトをダウンロードします:
https://github.com/cocoanetics/Examples

ここから DTCustomColoredAccessory.h および .m ファイルをダウンロードします: https://github.com/Cocoanetics/DTFoundation/tree/develop/Core/Source/iOS

DTCustomColoredAccessory ファイルを ExpandableTableCells プロジェクトに配置します。

ゼロから書き込もうとするのではなく、そこから編集して移動する方が簡単です。

于 2014-02-19T08:34:32.773 に答える
0

これはデリゲートによって可能です

- (NSInteger)tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath {
       //write code here
    }
于 2013-02-27T10:14:08.353 に答える