2012-11-07 33 views
0

我有很好的理由採用靜態UITableViewCell設計,因爲經過長時間的努力,我想出了我想要的表格格式。我有我的故事板中設計的所有tableView行。如何選擇性地改變一個UITableviewCell外觀與靜態其他單元格

現在,只需一行 - 在該行中添加複選標記 - 我找不到任何方法。我需要根據我的程序邏輯來完成它。

如果我實現數據源方法cellForRowAtIndexPath,我也需要爲其他所有單元格做些什麼。在做這件事的時候,我會把所有格式化爲靜態的其他單元格。如果我爲所有其他單元返回nil,則它們不會顯示。

我試着挑出這個特定的細胞與此代碼,在我UITableViewControllerviewdidLoad:

NSIndexPath* NotifyRow = [NSIndexPath indexPathForRow:0 inSection:0]; 
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:NotifyRow]; 

if (MYCONDITION_IS_TRUE) 
    cell.accessoryType = UITableViewCellAccessoryCheckmark; 
else 
    cell.accessoryType = UITableViewCellAccessoryNone; 

但上面並沒有工作,因爲我總是cell=nil。由於其內置的機制,當它在故事板中具有表格設計時,它不會在self.tableView結構中共享它。我試着在第一個語句中更改行和段值,但所有單元格都是nil

如何從靜態設計中選出我想要修改的這一個單元?

回答

0

發佈後不久,我意識到自己的錯誤。我在調用cellForRowAtIndexPath過早以獲取單元格 - 甚至在視圖完全鋪好之前。

只需添加上所有內容的頂部一排在我viewDidLoad中,和它的工作:

[self.tableView reloadData]; 

所以整個看起來像:

[self.tableView reloadData]; 
NSIndexPath* NotifyRow = [NSIndexPath indexPathForRow:0 inSection:0]; 
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:NotifyRow]; 

if (MYCONDITION_IS_TRUE) 
    cell.accessoryType = UITableViewCellAccessoryCheckmark; 
else 
    cell.accessoryType = UITableViewCellAccessoryNone; 
相關問題