没有这样的模块 '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
:
我尝试了很多东西:
- 清理/重建
- 删除 pods 并重新安装
- 关闭/重新打开XCode
- 将框架添加到我的构建设置中
- 前面步骤的组合
这是我添加 TTTabBar 的二进制文件链接:
很高兴知道它适用于 RealmSwift
和 import TTTabBar
,但它不知道 TTTabBarItem
在 class TabBarItem: TTTabBarItem {}
中是什么。
请注意,我已于 2 天前开始 iOS 开发,因此可能缺少一些明显的东西。
问题实际上出在 TTTabBar 模块本身。 TTTabBar 和 TTTabBarItem 类 及其方法未声明为 public
。所以你不会在你的应用程序中得到那些 类 。该模块的创建者应该制作那些 类 和函数 public
如果您的 TTTabBar* 文件在 类 及其一些方法中包含 public 访问说明符并构建您的项目,解决方案是更改本地副本。
例如
public class TTTabBar: UIViewController
和 public class TTTabBarItem: UIButton
您还必须将其他 3 种方法标记为 public。
- 在 TTTabBar 文件中
viewDidLoad
- 在 TTTabBarItem
drawRect
和 init?
您遇到这些问题是因为您不应该导入 TTTabBarItem
(您打算使用的 class),而是整个库,在您的情况下 import TTTabBar
。我认为链接器足够聪明,只包含您在代码中使用的引用文件。
所以再次使用 import TTTabBar
代替。
更重要的是,库的开发者犯了一个根本性的错误:
如果您查看源文件,您会看到:
class TTTabBar: UIViewController { // rest of the code... }
他没有指定 public
访问修饰符,这基本上意味着你不能在库的内部目标之外访问它(你基本上只能在源 project/target 本身内引用它,这对集成此库的任何开发人员都是无用的)。
你还有一个选择:
由于库的大小,您可以继续将文件复制到您的项目中(如果您只是在后续 pod install
调用中使用 pod,您添加的任何修改将始终被覆盖,因此您最初修改库的意图似乎也不是一个可行的选择。
我正在尝试延长 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
:
我尝试了很多东西:
- 清理/重建
- 删除 pods 并重新安装
- 关闭/重新打开XCode
- 将框架添加到我的构建设置中
- 前面步骤的组合
这是我添加 TTTabBar 的二进制文件链接:
很高兴知道它适用于 RealmSwift
和 import TTTabBar
,但它不知道 TTTabBarItem
在 class TabBarItem: TTTabBarItem {}
中是什么。
请注意,我已于 2 天前开始 iOS 开发,因此可能缺少一些明显的东西。
问题实际上出在 TTTabBar 模块本身。 TTTabBar 和 TTTabBarItem 类 及其方法未声明为 public
。所以你不会在你的应用程序中得到那些 类 。该模块的创建者应该制作那些 类 和函数 public
如果您的 TTTabBar* 文件在 类 及其一些方法中包含 public 访问说明符并构建您的项目,解决方案是更改本地副本。
例如
public class TTTabBar: UIViewController
和 public class TTTabBarItem: UIButton
您还必须将其他 3 种方法标记为 public。
- 在 TTTabBar 文件中
viewDidLoad
- 在 TTTabBarItem
drawRect
和init?
您遇到这些问题是因为您不应该导入 TTTabBarItem
(您打算使用的 class),而是整个库,在您的情况下 import TTTabBar
。我认为链接器足够聪明,只包含您在代码中使用的引用文件。
所以再次使用 import TTTabBar
代替。
更重要的是,库的开发者犯了一个根本性的错误:
如果您查看源文件,您会看到:
class TTTabBar: UIViewController { // rest of the code... }
他没有指定 public
访问修饰符,这基本上意味着你不能在库的内部目标之外访问它(你基本上只能在源 project/target 本身内引用它,这对集成此库的任何开发人员都是无用的)。
你还有一个选择:
由于库的大小,您可以继续将文件复制到您的项目中(如果您只是在后续 pod install
调用中使用 pod,您添加的任何修改将始终被覆盖,因此您最初修改库的意图似乎也不是一个可行的选择。