[英]IB Designables gives strange warning when using a custom class
我正在嘗試使用自定義 swift 類將我的故事板上的 UIButton 子類化,該類應該將按鈕顯示為自定義漢堡按鈕。
我收到了這個警告並且沒有看到在 Interface Builder 中呈現的漢堡按鈕,盡管它會間歇性地工作。
Custom 類稱為NThamburgerButton,我不知道為什么字符上的字符串出現在類名之前。
IB Designables:將類 UIButton 用於具有自定義類的對象,因為類 _TtC6CProjectName17NTHamburgerButton 不存在。
這個問題似乎再次受到關注,所以我會提供更新。
這個問題存在於 Obj-C 和 Swift 混合項目中。 所以有問題的類是一個 Swift 類。
在 Obj-C 中使 Swift 類可用時,您可以使用以下語法
@objc(NTHamburgerButton) public class NTHamburgerButton : UIButton {}
否則,在 Xcode 創建的 {Project-Name}-Swift.h 文件中,您將看到它從問題中生成了這些唯一的類名。
這里唯一真正的問題是 NThamburgerButton.swift 文件沒有包含在我當時正在查看的產品中,但是如果我切換目標,它工作正常。 因此,間歇性問題。
即使在應用了其他給出的解決方案之后,我還是在 Xcode 11 中遇到了這個錯誤。
就我而言,我有自己的@IBDesignable
類駐留在主模塊中(因此,不是來自 CocoaPod 或其他外部模塊)。 然而,即使為我的視圖類指定了一個objc(ClassName)
,自動生成的類名在構建時仍然被 Interface Builder 使用。
最后,我刪除了 IB 中的模塊名稱和模塊繼承,並刪除了錯誤並獲得了視圖預覽渲染:
所以,對我來說完整的解決方案是:
從 Xcode 11 開始,Swift 中似乎都需要兩者。 值得注意的是,盡管刪除了模塊引用,但我在運行時對視圖沒有任何問題。 我也不確定這個解決方案將如何查找從其他模塊導入的視圖。
這在 Xcode 12.1 中開始發生在我身上。 到目前為止,簡單地取消選中然后重新選中 Interface Builder 中的“Inherit Module From Target”似乎已經解決了這個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.