[英]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.