簡體   English   中英

為什么我的UITableViewCell沒有被投放?

[英]Why isn't my UITableViewCell being casted?

在我的表視圖中我有cellForRowAtIndexPath

MenuItemCell *cell = (MenuItemCell *)[[[NSBundle mainBundle] loadNibNamed:@"ResultCell" owner:nil options:nil] objectAtIndex:0];

在你告訴我不要使用xib之前:我有多個表視圖,其單元格需要看起來相同。 使用xib似乎是實現這一目標的最佳方法。

有問題的ResultCell xib由MenuItemCell “擁有”。 MenuItemCellUITableViewCell的另一個子類的子類。

這是問題所在:我在單元格分配行之后直接放置了一個斷點,這是我的lldb結果:

(lldb) po [cell class]
(id) $3 = 0x00b6b5fc UITableViewCell

為什么我的單元格是UITableViewCell而不是MenuItemCell (或者也許它和po不是正確的方法來解決這個問題?)

您可能沒有告訴Xcode / Interface Builder從XIB實例化MenuItemCell,因此它使用默認實現,即UITableViewCell。 請注意,轉換對象只會使編譯器認為它是指定類的實例; 不會奇跡般地變換對象到類的一個實例。 (換句話說,它是一個copmile-time表達式,而不是運行時表達式。)

這是關於如何設置NIB文件的所有者類的屏幕截圖

在此輸入圖像描述

您始終可以使用isKindOfClass方法檢查對象是否屬於某個類。

[cell isKindOfClass:[MenuItemCell class]]

另外,像H2CO3說的那樣。 您可能忘記將所有者類設置為MenuItemCell。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM