【问题标题】:How do I use Objective-C code from Github in my Swift program?如何在我的 Swift 程序中使用来自 Github 的 Objective-C 代码?
【发布时间】:2019-03-27 04:23:36
【问题描述】:

问题总结

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

这个 repo 是用 Objective-C 编写的。

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

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

我尝试过的

  • 我用 CocoaPods 成功安装了这个库。
  • 我跑了$pod install
  • 我成功跑了import MSCollectionViewCalendarLayout
  • 我在 Storyboard 上添加了一个新的 CollectionViewController,并将其分配给我的自定义 CalendarViewController
  • 我尝试(愚蠢地)在class CalendarViewController 中使用下面的代码,但收到以下错误消息:

"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 中有一些名为“Usage”的文档,但不幸的是我仍然不知道如何使用它:

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

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

问题总结

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

我想完成什么

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

提前谢谢大家!希望我可以在这里向 repo 的 README.md 文件提交正确的答案。

【问题讨论】:

  • self.collectionViewLayout = ... 应该更像self.collectionView.collectionViewLayout = ...

标签: objective-c swift cocoapods


【解决方案1】:

您可以更好地使用以下纯粹用 Swift 编写并且具有与 MSollectionViewLayout 相同 UI 的存储库之一

1) CalendarKit

2) Calendar

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-14
    • 2017-08-18
    • 2017-09-08
    • 1970-01-01
    • 2018-03-03
    • 2014-07-30
    • 1970-01-01
    相关资源
    最近更新 更多