2013-05-13 93 views

回答

7

是的,你可以。您需要一個保留最後選定行的變量。對於前:

@property (nonatomic, assign) NSInteger selectedRow; 

... 然後實現方法

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

    return 44.; 
} 

,然後更新方法:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 

    if(self.selectedRow == indexPath.row) 
     self.selectedRow = -1; 
    else 
     self.selectedRow = indexPath.row; 

    //The magic that will call height for row and animate the change in the height 
    [tableView beginUpdates]; 
    [tableView endUpdates]; 
} 

注意:初始化你的self.selectedRow-1值在開始時默認爲0

+0

您應該使'selectedRow'爲'NSIndexPath'來支持一個包含多個節的表。 – jszumski 2013-05-13 12:51:22

1

可以使用heightForRowAtIndexPath爲連續

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

您可以將支票NSIndexPath,並返回height該特定indexpath

0
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
    if(indexPath.row == rowtochangeheight) { 
     return 60; 
    } 
    else 
    { 
     return 44; 
    } 


} 
+0

rowtochangeheight ??? – nitz19arg 2013-05-13 11:12:42

+0

它涉及到你想改變高度簡單的行 – iEinstein 2013-05-13 11:14:56

0

是你可以做的設置高度,但你需要要保存所選行的索引路徑,並且必須通過負值初始化selectedRow變量。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    selectedRow = indexpath.row; 
    [tblView reloadData]; 
} 

- (float)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (indexPath.row == selectedRow) 
     return 150.0f; 

    return 30; 
} 
相關問題