2014-09-27 103 views
10

我正在使用IOX8和Xcode 6.我在故事板中創建了一個具有customtype單元格的表格,並且我在其中放置了一個標籤。我在IB中爲標籤輸入了一個標籤號碼,以便我可以在我的代碼中檢索對該標籤​​的引用。 但是,當我試圖去在我的「的cellForRowAtIndexPath」標籤的參考,使用viewWithTag我得到一個NIL的標籤:爲什麼UItableViewCell viewWithTag返回nil?

這是兩行代碼,在的cellForRowAtIndexPath很重要:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"PlayerCell"]; 


UILabel *nameLabel = (UILabel *)[cell viewWithTag:1]; 

「cell viewWithTag:1」行返回NIL,我不明白爲什麼。

我也試過「cell.contentView withWithTag:1」,這也沒有工作。

這是IOS 8或Xcode 6中的錯誤嗎?

感謝

-Malena

+0

細胞呢?它是否也返回零,以及單元格?在我的情況下,我得到零的細胞。 – 2014-10-08 06:00:36

+0

這個問題的答案是[這裏] [1] [1]:http://stackoverflow.com/questions/26344106/viewwithtag-returns-nil-on-uitableviewcell-only-first-time – 2015-05-20 07:34:30

+0

也許你正在加載數據視圖是可見的之前...嘗試重新加載數據在viewDidAppear – Yanchi 2015-05-31 13:38:15

回答

0

嘗試調試視圖層次。

  • 在調試模式下運行您的應用程序;
  • 轉到視圖,其中UITableViewController位於;
  • 在Xcode中點擊:Debug-> View Debugging-> Capture View Hierarchy;
  • 檢查天氣標籤是否正確分配。
+0

好技巧,但不適用於這個問題。 – c9s 2015-03-10 02:00:17

5

我在使用IOS8和Xcode 6.1時遇到了同樣的問題。我發現如果我啓用Size ClassesviewWithTag總是返回nil。我認爲這可能是Xcode 6.x的一個缺陷。只要禁用Size Classes,一切都會好起來的。

+0

這個工程,這很奇怪。 – c9s 2015-03-10 02:00:32

11

取消選中故事板中的Size Classes選項並清除&構建應用程序。 它應該現在工作。

+2

如果我需要啓用** Size Classes **,是否有解決方法? – 2015-04-15 17:52:47

+3

取消清潔&生成和重新檢查尺寸類選項 – 2015-04-15 18:36:06

0

如果初始視圖控制器是我的tableview,那麼一切按預期工作。當它來自另一個視圖控制器時,我遇到了問題。

在我的情況,在以前的視圖控制器我有:

RoutePreview *rs = [[RoutePreview alloc] init]; 
rs.rota = [availableRoutes objectAtIndex:indexPath.row]; 

[self.navigationController pushViewController:rs animated:YES]; 

我把它換成這與

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"SBIPhone" bundle:[NSBundle mainBundle]]; 
RoutePreview *xpto = [storyboard instantiateViewControllerWithIdentifier:@"RouteSummary"]; 
xpto.rota = [availableRoutes objectAtIndex:indexPath.row]; 
[self.navigationController pushViewController:xpto animated:YES]; 

問題不見了。

基本上不是直接實例化tableviewcontroller,而是通過標識符實例化它,並且不再有更多的nill單元格在tableView dequeueReusableCellWithIdentifiercell viewWithTag:返回零。

2

儘量使視圖「installed」,看看這個link

+1

需要對此「已安裝」尺寸類進行一些認真的工作! – 2016-05-02 10:59:28

0

我的UITableViewCell,一個在哪裏我把它標記號的故事板,一個在我的代碼mistakingly了2個原型在哪裏註冊它的Nib文件。這引起了混淆,我無法用標籤獲得視圖。 我的例如, let nib = UINib(nibName: "DetailTableViewCell", bundle: nil) tableView.register(nib, forCellReuseIdentifier: "headerViewCell")

從我的代碼中刪除上面的代碼解決了這個問題。希望這可以幫助任何有類似問題的人。

相關問題