如何在我的Swift程序中使用Github的Objective-C代码?

时间:2019-03-27 04:23:36

标签: objective-c swift cocoapods

问题摘要

我正在Swift中构建一个日历应用,我想从这个仓库开始使用UI:https://github.com/erichoracek/MSCollectionViewCalendarLayout

此存储库用Objective-C编写。

但是,我不确定如何使用Swift在此Github存储库之上构建。

我想在日历中使用的UI示例:

calendar ui

我尝试过的

  • 我已使用CocoaPods成功安装了该库。
  • 我跑了$pod install
  • 我成功运行了import MSCollectionViewCalendarLayout
  • 我在情节提要板上添加了一个新的CollectionViewController,并将其分配给我的自定义CalendarViewController
  • 我尝试了class CalendarViewController中的以下代码,但出现了以下错误消息:

Screenshot of error message

"Cannot assign value of type 'MSCollectionViewCalendarLayout.Type' to type 'UICollectionViewLayout'"
override func viewDidLoad() {
        super.viewDidLoad()

        self.collectionView.collectionViewLayout = MSCollectionViewCalendarLayout
    }
  • 我知道我可能必须使用self.collectionView.register(cellClass:forCellWithReuseIdentifier:) ...但是如何使用?

  • 在Github中有一些名为“用法”的文档,但是不幸的是,我仍然对如何使用它迷失了:

Screenshot of "Usage" section in Github repo

  • 还包括一个用Objective-C编写的Example.xcworkspace。我经历了大部分。它们包括它们使用的每个元素的头文件(.h)和实现文件(.m)。

    Screenshot of Example.xcworkspace

  • 这里有一个切线问题的好答案:https://stackoverflow.com/a/45540130/3979651,但这不能直接解决我的问题。我想import这个Cocoapods库,而不是在Objective-C文件的顶部编写。但是我也不完全确定这是否是正确/最佳的方法。

问题摘要

  1. 如何将CollectionViewController链接到MSCollectionViewCalendarLayout,以使其具有相同的UI?
  2. 在这种情况下如何使用self.collectionView.register(cellClass:forCellWithReuseIdentifier:)
  3. 是否必须像示例中那样为每个元素编写一个新文件? (事件单元格,“天”列标题等)
  4. 或者,将Example元素文件(.h和.m)复制并粘贴到我的应用中会更容易吗?如果是这样,我如何在这些文件之上构建文件?

我想完成的事情

我想像库一样导入MSCollectionViewLayout,将其附加到我自己的CollectionViewControllers,并在此之上构建自己的功能,全部使用Swift。

提前谢谢大家!希望我可以在此处对仓库的README.md文件提交正确的答案。

1 个答案:

答案 0 :(得分:1)

您可以更好地使用以下回购协议之一,这些回购协议纯粹是用 Swift 编写的,并且具有与 MSCollectionViewLayout

相同的UI

1)Calendar

2)here

  

注意:我个人使用了这些库,这些库很容易   与您现有的应用程序集成。