ios - 无法在 Swift 中调用 Obj-c 中定义的函数

标签 ios objective-c xcode swift

我正在尝试在用 Swift 编写的项目中使用用 objective-c 编写的第三方库。我已经将文件复制到项目中并构建了桥接文件,并且能够引用库中的类并使用属性。但是我无法调用库中的实例函数,XCode 只是提示 value of type 'EFCircularSlider' has no member 'setInnerMarkingLabels'。代码如下:

库中的函数:

-(void)setInnerMarkingLabels:(NSArray*)innerMarkingLabels
{
    _innerMarkingLabels = innerMarkingLabels;
    [self setNeedsUpdateConstraints]; // This could affect intrinsic content size
    [self setNeedsDisplay]; // Need to redraw with new label texts
}

swift调用方式:

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)

    let hourSliderFrame = CGRectMake(55, 220, 210, 210)
    hourSlider = EFCircularSlider(frame: hourSliderFrame)
    hourSlider.unfilledColor = UIColor(red: 23/255.0, green: 47/255, blue: 70/255, alpha: 1.0)
    let markingLabels = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"]
    hourSlider.setInnerMarkingLabels(markingLabels)
}

最佳答案

您可能必须使用属性(点)赋值符号而不是调用显式 setter

hourSlider.innerMarkingLabels = markingLabels

PS:hourSlider 是在哪里初始化的?代码将无法编译。

文档说

You access properties on Objective-C objects in Swift using dot syntax, using the name of the property without parentheses.

关于ios - 无法在 Swift 中调用 Obj-c 中定义的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34973989/

相关文章:

ios - 是否可以使用 libgdx 为 IOS 添加排行榜?

iphone - 替换为 view2 后删除 View 1

iphone - 如何在 Xcode 中的 _WebThreadLockFromAnyThread 上设置符号断点?

ios - 如何使用 ios 中的自动布局将三个按钮并排放置在中心位置?

objective-c - Xcode 不兼容的指向整数转换的指针从结果类型为 NSInteger 的函数返回 void

xcode - 将 Storyboard移植到 iOS4

ios - 如何在 Facebook iOS SDK 中发布或分享?

ios - 在 iPad 中处理不同方向的最佳方式

objective-c - 将 View Controller 创建为新的详细信息 View Controller 时,我失去了对 IBOutlet 的访问权限

c++ - C 的 -> 是否等同于 Objective-C 中的点符号