簡體   English   中英

無法繼承UILabel:發送到UILabel的無法識別的選擇器

[英]Unable to subclass UILabel: Unrecognized selector sent to UILabel

我正在使用CocoaPods導入一些東西。 現在我正在嘗試使用TTTAttributedLabel ,它是UILabel一個豐富的子類,允許URL點擊等。

現在,我無法讓我的應用程序識別我的標簽實際上是TTTAttributedLabel實例,而不是常規的UILabel

在我的.xib中,我將常規UILabel拖入我的視圖中,然后編輯標簽的類,如下所示:

xib類

它確實為我自動完成了這個名字,所以我知道它知道這個課程。 然后,我將xib中的連接拖到視圖的類中,如下所示:

連接 它自動將自己指定為TTTAttributedLabel ,因為它識別它就是它,或者它會說UILabel

因為我已經指定了use_frameworks! 在我的podfile ,我必須導入該類,因此在我視圖的頂部類中,我import TTTAttributedLabel

現在,當我嘗試使用標簽時,它自動完成就像這樣: 自動完成 使用正確的類, TTTAttributedLabel 但是當我這樣做時:

print("labBody: ", labBody)

它打印出來:

labBody:  <UILabel: 0x7fa754c86710; frame = (16 459; 42 21); text = 'Label'; opaque = NO; autoresize = RM+BM; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x60000029cf20>>

認為這是一個UILabel。 如果我嘗試訪問任何TTTAttributedLabel特定的變量或函數,它仍然會為我自動填充它們:

labBody.enabledTextCheckingTypes = NSTextCheckingResult.CheckingType.link.rawValue

但是在運行時使用這些時,整個應用程序崩潰了,這樣說:

 -[UILabel setEnabledTextCheckingTypes:]: unrecognized selector sent to instance 0x7fdfc7c59300

我瞎了嗎? 為什么這不起作用? 這就是我一直在做的事情。 我可能周二很辛苦..我已經嘗試了所有常規的東西,清理,刪除派生數據,重新啟動Xcode,在再次運行之前從設備中刪除應用程序..

我以前甚至使用過TTTAttributedLabel ,我知道它有效。 唯一的新功能是這是我第一次使用use_frameworks! ..這會影響.xib嗎? 讓它無法知道子類,或什么......?

我不知道為什么這會有效,但我認為它與Objective-C中的pod有關,還有一些關於綁定和加載Obj-C的東西..

無論如何,我所要做的就是將對象包裝在一個新的本地類中。 的NewClass 然后將TTTAttributedLabel文件中的標簽類更改為此類而不是TTTAttributedLabel (顯然是我視圖類中的出口)。

除了創建這個類之外,不需要做任何事情,它不需要包含任何東西。

我確實讀過一些關於設置標志的內容,比如load ObjC -flag,我沒試過。 我認為該解決方案可能還會加載很多其他我不需要/想要加載的Object-C東西..

暫無
暫無

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

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