簡體   English   中英

IB Designables 在使用自定義類時發出奇怪的警告

[英]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 文件沒有包含在我當時正在查看的產品中,但是如果我切換目標,它工作正常。 因此,間歇性問題。

對我來說,Codermonk 和 specialvict 的解決方案都是必要的,但還不夠。

我還必須在 Interface Builder 中打開Inherit From Target

在此處輸入圖片說明

這對我有用。

即使在應用了其他給出的解決方案之后,我還是在 Xcode 11 中遇到了這個錯誤。

就我而言,我有自己的@IBDesignable類駐留在主模塊中(因此,不是來自 CocoaPod 或其他外部模塊)。 然而,即使為我的視圖類指定了一個objc(ClassName) ,自動生成的類名在構建時仍然被 Interface Builder 使用。

最后,我刪除了 IB 中的模塊名稱和模塊繼承,並刪除了錯誤並獲得了視圖預覽渲染:

所以,對我來說完整的解決方案是:

  1. 為 Swift 類聲明一個 Objective-C 類名
  2. 如上圖在Interface Builder中配置類

從 Xcode 11 開始,Swift 中似乎都需要兩者。 值得注意的是,盡管刪除了模塊引用,但我在運行時對視圖沒有任何問題。 我也不確定這個解決方案將如何查找從其他模塊導入的視圖。

這在 Xcode 12.1 中開始發生在我身上。 到目前為止,簡單地取消選中然后重新選中 Interface Builder 中的“Inherit Module From Target”似乎已經解決了這個問題。

暫無
暫無

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

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