簡體   English   中英

Objective-C應用程序中缺少Swift框架中的IBOutlet屬性

[英]IBOutlet properties from Swift framework are missing from Objective-C app

我有一個我在Swift中編寫的框架,它包含一個擴展UIView並具有IBOutlet屬性的類。

從我的Objective-C應用程序可以看到該類,但Interface Builder將看不到IBOutlet。 這是代碼:

@objc protocol MyFrameworkDelegate {
    // My delegate methods here
    ...
}

@objc class MyFrameworkClass: UIView {

    @objc @IBOutlet var delegate:MyFrameworkDelegate?
    // The rest of my class here
    ...
}

我把我的觀點的上課MyFrameworkClass在我的故事板,但delegate出口沒有顯示。

我嘗試使用和不使用@objc修飾符,沒有運氣。 當我從Objective-C檢查我的類時,該屬性在沒有IBOutlet情況下出現。

還有其他人遇到過類似的東西嗎?

編輯

這是Xcode為Swift生成的代碼 - > Objective-C轉換:

@protocol MyFrameworkDelegate;

SWIFT_CLASS("_Nc9a0xD6MyFrameworkClass")
@interface MyFrameworkClass : UIView
@property (nonatomic) id <MyFrameworkDelegate> delegate;
...

此外,這是我嘗試運行應用程序時收到的錯誤消息:

2014-06-22 21:41:59.095 MyApp Test[75211:17812266] Unknown class MyFrameworkClass in Interface Builder file.
2014-06-22 21:41:59.099 MyApp Test[75211:17812266] -[UIView setDelegate:]: unrecognized selector sent to instance 0xcf5d650
2014-06-22 21:41:59.101 MyApp Test[75211:17812266] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIView setDelegate:]: unrecognized selector sent to instance 0xcf5d650'

編輯

這是我的故事板的截圖:

在此輸入圖像描述

您的模塊為“ None ,您應該將其選擇為相應的值。

reason: '-[UIView setDelegate:]: unrecognized selector

這使得看起來有問題的對象是UIView的實例,而不是MyFrameworkClass 檢查IB中對象的類型。

我懷疑委托本身這個詞正在觸發某種潛在的錯誤/機制/漏洞抽象。

如何稱它為myFrameworkDelegate?

我也想知道從IB拖出是不是總能給出最好的結果,但我需要啟動Xcode 6並首先手動測試以查看會發生什么。 新技術 :)

代替

@objc @IBOutlet var delegate:MyFrameworkDelegate?

采用

@IBOutlet var delegate:AnyObject?

你可以將你的班級鏈接到這個屬性。

暫無
暫無

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

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