【发布时间】:2018-03-06 02:19:05
【问题描述】:
我的 Swift 文件中有一个 Initializer 方法,如下所示:
public init(frame: CGRect, type: NVActivityIndicatorType? = nil, color: UIColor? = nil, padding: CGFloat? = nil) {
self.type = type ?? NVActivityIndicatorView.DEFAULT_TYPE
self.color = color ?? NVActivityIndicatorView.DEFAULT_COLOR
self.padding = padding ?? NVActivityIndicatorView.DEFAULT_PADDING
super.init(frame: frame)
isHidden = true
}
我想从我的 Objective-C 文件中调用此方法,但它在编译时抛出错误。
错误:
/用户/桌面/旧 数据/ChatScreenViewController.m:396:92:否 'NVActivityIndicatorView' 的可见 @interface 声明选择器 'initWithFrame:type:color:padding:'
Obj-C 调用代码:
NVActivityIndicatorView *objNVActivityIndicatorView = [[NVActivityIndicatorView alloc] initWithFrame:CGRectMake(0, 0, 100, 100) type:NVActivityIndicatorTypeLineScalePulseOut color:[UIColor blueColor] padding:10]
我尝试了什么:
在我的 Swift 课程中添加了 @objc
@objc public final class NVActivityIndicatorView: UIView
还是无法访问上面的方法。
我的 Swift 文件:NVActivityIndicatorView.swift
怎么了?
【问题讨论】:
-
请分享一个错误。
-
添加了更多详细信息,请查看我更新的答案。
-
如果我没记错的话,这个问题的原因是在你的 init.xml 中使用了默认参数值。请删除该默认值并试一试。它应该可以工作。
-
是的@iamyogish 我已经通过删除默认值进行了同样的尝试,但仍然是同样的问题,根本没有运气。
-
检查您生成的头文件(名称应该类似于
MyApp-Swift.h。查看该方法如何(以及是否)在该头文件中暴露给Objective-C。这可能会给我们一些线索发生了什么。另外,如果您还没有,请确保您的 Objective-C 源代码包含该标头。
标签: ios objective-c swift initializer