2014-01-29 41 views
0

我正在創建一個應用程序,其中包含一個顯示具有自定義單元格的表格視圖的屏幕。每個單元格包含兩個標籤和一個子視圖,其中還包含其他子視圖。我正在處理單元格上的單擊事件以隱藏/顯示單元格中子視圖中的子視圖。我怎樣才能做到這一點,當我點擊一個單元格時,所有單元格的子視圖都會改變?更改UITableView中所有單元格的子視圖

這就像在iPhone上的股票應用程序(使用的是iOS 7),這裏是截圖:

enter image description here

正如上面的圖片中,當你點擊任何一個綠色的盒子,所有的框更改爲反映相同類型的值。

請讓我知道,如果這種方法是好的,或者如何實現。

回答

1

有幾種方法可以做到這一點。想到的第一個辦法是對的UITableViewCell子類中處理不同的狀態,只是重裝可見單元格:

[self.tableView reloadRowsAtIndexPaths:[self.tableView indexPathsForVisibleRows] withRowAnimation:UITableViewRowAnimationAutomatic]; 

如果你對過程雖然尋找更多的控制,這個過程也可能是通過改變狀態來實現未來的單元格應該加載到,然後在每個可見單元格上調用一個方法。這將爲您提供一種簡單的方法來完全控制單元格內容的更新方式。

// Change flag for cell state then... 
for (NSIndexPath *indexPath in [self.tableView indexPathsForVisibleRows]) { 
    if (condition) { 
     MyCellSubclass *cell = (MyCellSubclass *)[self.tableView cellForRowAtIndexPath:indexPath]; 
     [cell someMethodWithArg:(id)state]; 
    } 
} 
1

要做一些在股票應用程序中的東西,你應該處理兩個方法cellForRowAtIndexPath:然後單擊操作方法。

在的cellForRowAtIndexPath:你應該做哪些按下電池/按鈕,檢查,顯示值的基礎上:

//Pseudo code 
//cellForRowAtIndexPath 
if (cellNo3Pressed) 
{ 
    //set up text with the right value. 
} 
else if (otherCell) 
{ 
    //set up text with the right value. 
} 

這將處理這些不在屏幕上可見的細胞。

下一個動作方法應該處理的所有可見單元的漂亮的動畫:

NSArray *paths = [tableView indexPathsForVisibleRows]; 

for (NSIndexPath *path in paths) 
{ 
    UITableViewCell *cell = (UITableViewCell *)[self.tableView cellForRowAtIndexPath:path]; 
    //Animate changes for cell 
} 
相關問題