Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 没有此类模块';TTTabBarItem';使用椰子荚_Ios_Swift_Cocoapods - Fatal编程技术网

Ios 没有此类模块';TTTabBarItem';使用椰子荚

Ios 没有此类模块';TTTabBarItem';使用椰子荚,ios,swift,cocoapods,Ios,Swift,Cocoapods,我正在尝试扩展TTTabBar。当我在我的项目中使用lib时,它工作得很好,但我想将它作为一个pod(用于维护和版本管理)保存,并根据需要进行扩展 从那时起,我无法导入它而不出错。其他类似的答案(还有很多!)没有帮助 我的播客文件: source 'https://github.com/CocoaPods/Specs.git' platform :ios, '8.0' use_frameworks! target 'Octoly' do pod 'RealmSwift', '~>

我正在尝试扩展
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

我试过很多东西:

  • 清理/重建
  • 卸下吊舱并重新安装
  • 关闭/重新打开XCode
  • 将框架添加到我的建筑设置中
  • 前面步骤的组合
下面是我添加TTTabBar的链接二进制文件:

很高兴知道它在
RealmSwift
import TTTabBar
中运行良好,但是它不知道
TTTabBarItem
类TabBarItem:TTTabBarItem{}中有什么。


请注意,我在两天前就开始了iOS开发,因此可能有一些明显的东西我遗漏了。

问题实际上在于TTTabBar模块本身。TTTabBar和TTTabBarItem类及其方法未声明为
public
。所以你的应用程序中没有这些类。该模块的创建者应该将这些类和函数公开

解决方案是更改TTTabBar*文件的本地副本,以便在类及其某些方法中包含公共访问说明符,并构建项目

例如。
公共类TTTabBar:UIViewController
公共类TTTabBarItem:UIButton

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

  • 在TTTabBar文件中
    viewDidLoad
  • 在TTTabBarItem
    drawRect
    init?

  • 您之所以面临这些问题,是因为您不应该导入
    TTTabBarItem
    (您打算使用的类),而应该导入整个库,在您的例子中是
    import TTTabBar
    。我认为链接器足够聪明,只包含代码中使用的引用文件

    因此,再次使用
    import TTTabBar

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

    如果查看源文件,可以看到以下内容:

    class TTTabBar: UIViewController { // rest of the code... }
    
    他指定了no
    public
    access修饰符,这基本上意味着您不能在库的内部目标之外访问它(您基本上只能在源项目/目标本身中引用它,这对集成此库的任何开发人员都是无用的)

    不过您有一个选择:


    由于库的大小,您可以继续将文件复制到您的项目中(如果您在后续的
    pod安装
    调用中仅使用pod,您将添加的任何修改都将被覆盖,因此您最初修改库的意图似乎也不可行).

    这可能会对你有所帮助-谢谢,但不是。我已经读了好几遍了。我想了想,但告诉自己,图书馆的作者比我知道得多。谢谢你的帮助。我会联系开发商:)