2011-03-08 42 views
4

我想在編輯模式下更改UITableviewCell的外觀,就像它在Apple地址簿中顯示的一樣。單元格應該調整大小,我將添加UITextFields作爲子視圖。 我知道要更改單元格的外觀,您必須覆蓋單元格中的LayoutSubviews函數。我試圖做到這一點,我有一些有趣的效果,並調整大小:-)UITableViewCells在編輯模式下更改大小

我已經找了一段時間,在網上找到一些提示,但我沒有找到一個。 如果有人可以提供一些提示如何做到這一點的權利?鏈接到教程或代碼將會很好。

感謝 埃迪

回答

0

如果要調整細胞的高度,你也應該在你的UITableView委託更改「heightForRowAtIndexPath」。 至少這是我偶然發現了幾次。

+0

感謝您的建議,但我在layoutsubviews動畫錯了,它改變了大小但它將所有細胞移動到一個地方或切割細胞的頂部......正如我在進入編輯模式時所說的非常有趣的動畫:-) – Eddy 2011-03-08 12:43:31

+0

因此,如果您在layoutSubviews中的代碼錯誤,它可能會有所幫助,如果你向我們展示代碼,以便我們可以一起找到錯誤的部分。 :) – Maverick1st 2011-03-08 12:48:14

+0

即時通訊不在家atm所以我沒有在這裏的代碼,但我做的是這樣的:單元格在編輯模式..... self.frame = CGRectMake(x,y,w,h)....那麼所有的單元格都會將動畫移動到xy,但會像高度一樣改變大小: - )...我如何更改未移動的幀.....當我今晚回到家時,我可以提供我的代碼。 – Eddy 2011-03-08 12:56:30

1

當你設置myTable.editing=YES;它調用表視圖數據源和委託方法。

因此,如果您有任何要顯示的數據表,然後上面的代碼行調用delgate方法

,所以你可以在這裏

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

     if(myTable.editing==YES) 
     { 
      return 70;//customize it. 
     } 
     return 50; 

} 
+2

默認情況下,當您將表切換到編輯模式時,不會調用該函數。 這需要在tableview上調用方法reloadData。如果您調用重新加載數據,編輯動畫將消失。 – 2014-07-21 22:07:21

+0

這實際上起作用。只需在此方法中設置單元格的高度,它就可以工作。 (除非你想編輯動畫)。 – Sebyddd 2014-08-29 13:45:12

0

覆蓋setEditing:animated:代碼,並刷新你的表視圖細胞存在。

4

覆蓋setEditing:animated:並重新加載您的表格視圖單元不是一個好主意。 這是非常資源昂貴的,而不是正確的地方去做。

UITableViewCell子類,重寫方法didtransitionToState: 在那裏,你可以直接在單元格網點辦事,就像這樣:

- (void)didTransitionToState:(UITableViewCellStateMask)state 
    { 
     [super didTransitionToState:state]; 

     if (state == UITableViewCellStateShowingEditControlMask) { 
      // edit mode : peform operations on the cell outlets here 

     } else if (state ==UITableViewCellStateDefaultMask) { 
      // normal mode : back to normal 
    } 
+0

我在這裏使用子類方法在借記模式下更改單元格內的UILabel的顏色。它效果很好。 – 2014-02-17 20:51:52

相關問題