2013-05-03 49 views
0

我有一個帶有動態單元大小的16-20個單元格的UITableView。當一個單元展開它自己時,它也應該移動到屏幕的頂部。我使用「UITableView setContentOffset」方法做到了這一點。除了表格中的最後一個單元格外,它工作良好,不能將其自身移動到頂部。如何動態更改最後一個單元格的UITableViewCell大小

我試圖改變框架& UITableView的內容大小,但沒有一個爲我工作!

任何想法?

[更新] 下面是部分代碼:(它的UITableViewCell的裏面,所以自指向當前單元格)

HomeViewController *tempViewController = (HomeViewController *) delegate; 
UIView *commentField; 

/*Skipping lines of codes manipulating commentField */ 

//Adding a subview to current cell which needs more space 
[self addSubview:commentField]; 

//Expanding cellSize to EXPANDED_CELL_HEIGHT 
//ViewController has access to cell size property and using that to determine each cell size. 
[self setCellSize:(EXPANDED_CELL_HEIGHT)]; 

//Reloading UITableView to reflect the cell size change with animation 
[[tempViewController tableView] beginUpdates]; 
[[tempViewController tableView] endUpdates]; 

[[tempViewController tableView] setContentOffset:CGPointMake(0, self.frame.origin.y) animated:YES];  

,並在我的視圖控制器(正如我剛纔所說)我越來越CELLSIZE形式電池本身

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return [(BaseTableViewCell *)[cellContainer objectAtIndex:indexPath.row] cellSize]; 
} 
+0

請向我們顯示您的代碼。這是真的在黑暗中拍攝,否則... – Stunner 2013-05-03 21:45:32

+0

我做到了。希望它有幫助 – Mojtaba 2013-05-03 21:53:55

回答

3

您可以更改使用的tableview委託方法heightForRowAtIndexPath:單元格的高度時,indexPath.row等於你的最後一排,返回你想的高度。

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if(indexPath.row == i)//i being whatever row index you want to change 
    { 
     return 60.0;//or float size you want 
    } 
    else 
    { 
    return 30.0; 
    } 
} 

或者你可以修改裏面willDisplayCell:小區的邊界。如果您使用自定義的tableview單元格,只需將子視圖縮小到任意框架並使單元格背景清晰等。

+0

我已經這樣做了!看看更新的代碼 – Mojtaba 2013-05-03 22:42:09

+0

你沒有做正確的 – 2013-05-03 22:45:35

+0

我給你做了一個例子 – 2013-05-03 22:47:53

相關問題