ios - Swift - 具有不同方法名称的多个扩展但仍然不起作用

标签 ios swift xcode

我有两个框架项目(A 和 B),在这两个框架中我都有一个 UIViewController 扩展。

  1. 我在框架 B 中的扩展具有方法“loadFromNib”
  2. 在框架“B”中,我有访问“loadFromNib”的类
  3. 在框架“B”中,我还引用了框架“A”
  4. 现在我已将 UIViewController 扩展添加到框架“A”,但名称为“loadViewFromNib”。

现在我现有的类会抛出 loadFromNib 不可用的错误,并建议我访问 loadViewFromNib 方法。我在这里缺少什么。为什么我的类没有引用正确的扩展名

//Code from Framework B
extension UIViewController
{
    public class func loadFromNib() -> Self?
    {
        return loadNibFilePrivateMethod()
    }
    ....
}

//Code from Framework A
extension UIViewController
{
    public class func loadViewFromNib() -> Self?
    {
        return loadNibFilePrivateMethod()
    }
    ....
}

我正在将多个其他框架(由其他团队拥有)的公共(public)代码合并到框架 A,并且无法修改任何其他框架中的任何内容。所以我希望我的代码能够共存而不破坏任何东西。

最佳答案

Now my existing classes throw error that loadFromNib is not available

可能是因为您尝试从声明它的框架外部使用loadFromNib? (这就是错误消息...不可用的含义)

当您希望方法/类型/函数可供其他模块(例如框架、目标)使用时,您需要将它们声明为 public

因此,要解决您的问题,请声明您的方法

公共(public) func loadFromNib(...

而且很有可能会可用。

更新

您是在 View Controller 实例还是 View 上调用方法?这个名字暗示了他们期望做什么的模糊性。

关于ios - Swift - 具有不同方法名称的多个扩展但仍然不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42481756/

相关文章:

ios - CoreMidi 和外部 USB Controller

ios - 为什么Text Field在输入字符串的末尾添加空格?

ios - 快速动画所有添加的 View alpha

objective-c - 在没有服务器的情况下在 XCode 3/4 中使用 GIT 或 SVN

xcode - 错误: 175002 (RA layer request failed)

ios - Xcode 6.1.1 为通用构建启动图像

objective-c - 停止 TWTweetComposeViewController 在设备锁定时自动取消

ios - 为图片分配图案信息 (iOS)

iphone - Xcode 4 - 使用正则表达式的查找器

ios - 如何根据某些百分比值在 UIView 上显示百分比状态或进度?