我试图在用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
}

快速打电话的方式:
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在哪里初始化?原样的代码将无法编译。

该文件说

您可以使用点在Swift中的Objective-C对象上访问属性
语法,使用不带括号的属性名称。

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

10-11 22:37
查看更多