没有这样的模块 'TTTabBarItem' 使用 CocoaPods

No such module 'TTTabBarItem' using CocoaPods

我正在尝试延长 TTTabBar。当我的项目中有 lib 时,它运行良好,但我想将它保留为一个 pod(用于维护和版本管理)并根据需要扩展它。

从那时起,我就无法正确导入它。其他类似的答案(还有很多!)没有帮助。

我的播客文件:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!

target 'Octoly' do
    pod 'RealmSwift', '~> 0.98'
    pod 'Mixpanel', '~> 2.9'
    pod 'SwiftHTTP', '~> 1.0'
    pod 'TTTabBar', '~> 1.1'
end

这是我尝试导入它的代码,您还可以看到我打开了工作区并安装了 TTTabBar

我尝试了很多东西:

这是我添加 TTTabBar 的二进制文件链接:

很高兴知道它适用于 RealmSwiftimport TTTabBar,但它不知道 TTTabBarItemclass TabBarItem: TTTabBarItem {} 中是什么。

请注意,我已于 2 天前开始 iOS 开发,因此可能缺少一些明显的东西。

问题实际上出在 TTTabBar 模块本身。 TTTabBar 和 TTTabBarItem 类 及其方法未声明为 public。所以你不会在你的应用程序中得到那些 类 。该模块的创建者应该制作那些 类 和函数 public

如果您的 TTTabBar* 文件在 类 及其一些方法中包含 public 访问说明符并构建您的项目,解决方案是更改本地副本。

例如 public class TTTabBar: UIViewControllerpublic class TTTabBarItem: UIButton

您还必须将其他 3 种方法标记为 public。

  1. 在 TTTabBar 文件中 viewDidLoad
  2. 在 TTTabBarItem drawRectinit?

您遇到这些问题是因为您不应该导入 TTTabBarItem(您打算使用的 class),而是整个库,在您的情况下 import TTTabBar。我认为链接器足够聪明,只包含您在代码中使用的引用文件。

所以再次使用 import TTTabBar 代替。

更重要的是,库的开发者犯了一个根本性的错误:

如果您查看源文件,您会看到:

class TTTabBar: UIViewController { // rest of the code... }

他没有指定 public 访问修饰符,这基本上意味着你不能在库的内部目标之外访问它(你基本上只能在源 project/target 本身内引用它,这对集成此库的任何开发人员都是无用的)。

你还有一个选择:

由于库的大小,您可以继续将文件复制到您的项目中(如果您只是在后续 pod install 调用中使用 pod,您添加的任何修改将始终被覆盖,因此您最初修改库的意图似乎也不是一个可行的选择。