2012-08-16 22 views

回答

56

我不能完全肯定這是否會工作,因爲我從來沒有使用super管理單元嘗試。如果你的代碼工作與super,那麼你應該能夠逃脫這樣做是爲了設置背景色:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    UITableViewCell *cell = [super tableView:tableView cellForRowAtIndexPath:indexPath]; 
    cell.backgroundColor = [UIColor clearColor]; 
    return cell; 
} 

無論哪種方式,這似乎對我來說,做事情的一種奇怪的方式。通常情況下,單元格按照缺省UITableView boiletplate代碼在方法本身中創建並重新使用,而不呼叫super

+2

謝謝,這很好。由於表格非常長,每個單元格都是完全不同和靜態的,因此我發現將它們全部置於Storyboard中並將IBOutlet創建爲所有需要數據的UILabel更容易。 – Darren 2012-08-16 19:54:04

+0

@Jonathan謝謝 – 2014-04-16 03:26:36

+0

謝謝!你拯救了一天! – 2015-10-28 08:41:51

1

您可以設置的方法,爲了把它在viewDidLoad中得到所有的細胞,做任何你想要他們,你可以這樣做:

NSArray *visibleIndexPaths = [self.tableView indexPathsForVisibleRows]; 

要獲得所有當前能夠觀察的細胞

的指數路徑,然後用迭代它們以下述方式

UITableViewCell *cell = nil; 
for (int i = 0; i < 30; i++) { 
    cell = [self.tableView cellForRowAtIndexPath:[visibleIndexPaths objectAtIndex:i]]; 
    // Do your setup 
} 

您也可以參考this Apple developer document部分「靜態行內容技術」

+0

這種方法沒有工作,但感謝的答案。 – Darren 2012-08-16 19:51:32

+0

沒問題,現在我可以重構我的代碼更好 – 8vius 2012-08-16 19:58:30

17

試試這個委託方法:

- (void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
cell.backgroundColor = [UIColor clearColor]; 
} 
+0

這種方法確實奏效,謝謝。然而,我選擇jon的答案是正確的,因爲它似乎是設置單元格的正確位置。謝謝 – Darren 2012-08-16 19:52:35

+1

接受的答案有效,但不必要的冗長和複雜。 'willDisplayCell:'更簡單明瞭,非常適合用例。 – 2014-09-29 02:06:29

相關問題