0

cellにボタンが付いているのは 1 つだけtableviewです。cell高さは

tableView:tableView:heightForRowAtIndexPath:

セルの高さは 40 です。

ボタンをクリックしたときに、セルの高さを 80 に変更するにはどうすればよいですか? 助けてくれてありがとう。

4

3 に答える 3

3

プロパティを定義すると、次のようになり@synthesizeます。

@property (retain, nonatomic) NSIndexPath* selectedRowIndex;

オーバーライドdidSelectRowAtIndexPathheightForRowAtIndexPathメソッド:

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

    if(selectedRowIndex && indexPath.row == selectedRowIndex.row) {

        //[_yourTableView deselectRowAtIndexPath:indexPath animated:YES]; If you only want the cell to get bigger
        selectedRowIndex = nil;

    }

    else {  self.selectedRowIndex = [indexPath retain];   }

    [tableView beginUpdates];
    [tableView endUpdates];
}

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

if (tableView == _yourTableView) {


    if(selectedRowIndex && indexPath.row == selectedRowIndex.row){

        return 80;
    }

    // Cell isn't selected so return single height
    return 40;

}

else return 0;
}

beginUpdates および endUpdates 行のため、これはセルの高さをアニメーション化する必要があります。

于 2012-11-08T16:33:33.663 に答える
1

UITableView デリゲートのドキュメントは次のとおりです。デリゲートを設定し、関数を (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath に設定する必要があります。戻り値は CGFloat であることを忘れないでください。したがって、80 ではなく 80.0 を返します。

于 2012-11-08T16:30:26.570 に答える
0

ボタンが押されたら、それが押されたことを示す値に変数を設定してから、tableViewでreloadDataを呼び出す必要があります。これにより、tableView:heightForRowAtIndexPathが再度呼び出されます。

tableView:heightForRowAtIndexPathで、ボタンが押されたかどうかを示す変数を確認し、ボタンが押された場合は80を返します。

于 2012-11-08T16:23:52.213 に答える