簡體   English   中英

如何動態擴展tableview中的單元格?

[英]how do I expand cell in tableview dynamically?

我在tableview只有一個帶有按鈕的cell cell高度定義為

tableView:tableView:heightForRowAtIndexPath:

像元高度為40;

單擊按鈕時,如何將像元高度更改為80? 謝謝你的幫助。

定義一個屬性並@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行,因此這應該使單元格高度動畫化。

這是UITableView委托的文檔 您需要設置一個委托並將函數設置為-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath。 請記住,返回值是CGFloat,所以返回80.0而不是80。希望這會有所幫助。.閱讀文檔中有關其他委托函數的更多信息...

當按下按鈕時,您應該將變量設置為一個值,該值指示它已被按下,然后在tableView上調用reloadData。 這將使tableView:heightForRowAtIndexPath再次被調用。

在tableView:heightForRowAtIndexPath中,檢查告訴您是否已按下按鈕的變量,如果已按下則返回80

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM