繁体   English   中英

ScrollableGraphicView Swift库在Objective C项目中的问题

[英]Issue with ScrollableGraphicView Swift Library in Objective C project

大家好,我的应用程序中的图表我使用的是完全用Swift语言编写的MIT ScrollableGraphView库。

这是Ghitub的链接https://github.com/philackm/ScrollableGraphView

为了在我的ObjectiveC项目中使用这个库,我将其导入到我的视图控制器文件中:

#import "TargetName-Swift.h"

然后,要使用该库,我们需要包含<ScrollableGraphViewDataSource>

此时,文档说以这种方式分配类

ScrollableGraphView * graphView = [[ScrollableGraphView alloc] initWithFrame: self.view.frame dataSource: self];

这是我完整的ViewController.m

#import "TargetName-Swift.h"

@interface Dashboard () <ScrollableGraphViewDataSource>
@end

@implementation Dashboard

- (void)viewDidLoad {
    [super viewDidLoad];

    ScrollableGraphView *graphView = [[ScrollableGraphView alloc] initWithFrame: self.view.frame dataSource: self];
    [self.view addSubview: graphView];
}

我的问题是xCode将此错误返回给我

'ScrollableGraphView'的可见@interface没有声明选择器'initWithFrame:dataSource:'

我想我已经遵循了使用该库的所有必要说明,但是我不明白为什么我找不到带有数据源的类分配

在ScrollableGraphView.swift文件中,类分配还包括数据源

public init (frame: CGRect, dataSource: ScrollableGraphViewDataSource) {
        self.dataSource = dataSource
        super.init (frame: frame)
    }

所以我不明白为什么我不能在目标C中分配类。

我在哪里做错了? 有没有人使用过这个库? 你知道如何解决这个问题吗?

在我看来,swift源文件中的类分配没有扩展名@objc

我在初始化之前添加了此内容,一切对我来说都非常完美...

这是更改:

旧资料

public init(frame: CGRect, dataSource: ScrollableGraphViewDataSource) {
        self.dataSource = dataSource
        super.init(frame: frame)
    }

带有@ objc的源

@objc public init(frame: CGRect, dataSource: ScrollableGraphViewDataSource) {
        self.dataSource = dataSource
        super.init(frame: frame)
    }

现在一切正常...我也感谢OOPer的建议,在这种情况下,它是正确的!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM