2014-07-15 110 views
0

我已經做了功課,我原本以爲一切盡在掌握。 當我運行我的項目時一切正常,但自定義UITableViewCell中的UITextView爲空。自定義的UITableViewCell不顯示任何

這裏是一個重要的代碼:

[self.tableView registerClass:[NewsCell class]forCellReuseIdentifier:@"NewsCell"]; 

然後:

NewsCell *cell = [tableView dequeueReusableCellWithIdentifier:@"NewsCell" forIndexPath:indexPath]; 

NSDictionary *newsObject = [_newsArray objectAtIndex:indexPath.row]; 
NSString *title = [newsObject objectForKey:@"newsTitle"]; 

NSLog(@"title: %@", title); // This puts out the correct stuff 

[cell.newsTeaser setText:title]; 

但newTeaser UITextView顯示了空。爲什麼會這樣,我做了什麼錯誤? 我應該補充說,這是我第一次在iOS 7中製作自定義單元格...

+3

如果沒有顯示什麼,什麼*不*顯示它?另外,確保你的單元格的'newsTeaser'插座連接到標籤之類的東西。 – Caleb

+2

不顯示任何內容?所以它顯示了一些東西? #doublenegative – CW0007007

+0

你確定cell.newsTeaser不是零嗎? – CW0007007

回答

3

根據我的經驗,這經常發生,因爲您正在執行錯誤的init方法。請注意,UITableViewCell的指定初始化程序是initWithStyle:reuseIdentifier:。如果您要添加自定義視圖層次結構,而且您不會在此初始化程序中執行此操作,則不會創建視圖。

在你的細胞也應與界面生成器兼容的情況下,你也應該實現awakeFromNib

//編輯: 但是,如果您使用的界面生成器中的註釋中規定,您使用了錯誤的註冊方法。 registerClass:forCellReuseIdentifier:僅用於通過代碼創建類。如果您的自定義單元佈局有xib文件,則需要使用registerNib:forCellReuseIdentifier:註冊該xib文件。如果您正在使用故事板,則根本不需要註冊單元格。您只需要在故事板文件中指定單元的reuseIdentifier

+0

這是可能的,但是由於OP在評論中表示「cell.newsTeaser」爲零,這一事實似乎很難「最有可能」。似乎更可能的是,插座根本沒有連接。 – Caleb

+0

如果「插座沒有連接」[self.tableView registerClass:[NewsCell class] forCellReuseIdentifier:@「NewsCell」];'將是錯誤的註冊方式。無論如何,我會更新我的帖子。 –

+0

@madboy謝謝!問題解決了。 –

0

如果是從一個API端點讀取數據,這可能是您的通話塊發生的主/ UI線程上,所以在等待,呼叫塊,完成獲取數據的UI被阻止。

如果是這樣的話,您需要使用您的dispatch_async塊法裏是這樣的:

dispatch_async(dispatch_get_main_queue(), ^{ 
     [self.tableView reloadData]; 
    }); 
相關問題