2012-11-15 95 views
8

我正在從我自定義我的TableViewCells在tableView:cellForRow:atIndexPath:到使用自定義UITableViewCell子類遷移。以下是我的做法:registerNib:forReuseidentifier與自定義UTTableViewCell和故事板

首先,創建空的XIB,將UITableViewCell拖到那裏,並將UILabel放在頂部。創建一個類(UITableViewCell的子類),並在Interface Builder的屬性編輯器中將該類設置爲MyCell。 然後,在我的TableViewController,把下面的:

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
// load custom cell 
UINib *cellNIB = [UINib nibWithNibName:@"MyCell" bundle:nil]; 
if (cellNIB) 
{ 
    [self.tableView registerNib:cellNIB forCellReuseIdentifier:@"MyCell"]; 
} else NSLog(@"failed to load nib"); 
} 

之後,我從tableView:cellForRow:atIndexPath:消滅了所有的自定義代碼只留下默認行:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"MyCell"; 
    MyCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    return cell; 
} 

當我跑了這一點,我希望在每個單元格中看到一堆帶有單個標籤的單元格(創建XIB時在中間放置的標籤)。但是相反,我看到的只是普通的白色空單元格,添加/刪除組件對XIB佈局沒有幫助。

我花了一天嘗試不同的選項,例如在界面生成器中爲自定義單元格XIB設置reuseIdentifier並加載視圖tableView:cellForRow:atIndexPath:,但沒有任何幫助。

回答

10

......但事實證明,我錯過的唯一的事情就是清除我的Storyboard中用於此TableViewController的原型單元格的reuseIdentifier。似乎故事板初始化它的視圖/組件,後來調用viewDidLoad,而不是採取我的不錯的自定義單元格,xCode設置真正的單元格視圖重新使用純白色單元格,這是新創建的TableViewControllers的標準。

如此反覆:去你的TableView屬性和刪除您之前設置reuseIdentifier;)

我花了這這麼多的時間,所以我想這可能幫助別人,如果我在這裏分享這方面的經驗。