【问题标题】:UIViewController Objective-C category not available in SwiftUIViewController Objective-C 类别在 Swift 中不可用
【发布时间】:2015-01-25 09:57:56
【问题描述】:

我在其他问题中读到,在 Swift 中使用 Objective-C 类别方法很容易。只需在 Bridging 标头中导入 .h 文件。

我是为我的UIViewController 类别做的,但我无法从 Swift 访问它的方法(这不是自动完成问题......它无法编译)。

这是类别的代码...有什么奇怪的或我错过的吗?

#import "UIViewController+LCSideMenuViewController.h"
#import "LCSideMenuViewController.h"

@implementation UIViewController (LCSideMenuViewController)

/**
 Return a reference to the root SideViewController (if exists)
 */

- (LCSideMenuViewController *)sideMenuViewController
{
    UIViewController *viewController = self.parentViewController;

    while (!(viewController == nil || [viewController isKindOfClass:[LCSideMenuViewController class]])) {
        viewController = viewController.parentViewController;
    }

    return (LCSideMenuViewController *) viewController;
}

然后我尝试使用以下代码快速获取sideViewController

import UIKit

class TutViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        self.sideMenuViewController() ... 

    }
.
.
.

我的桥接头只是:

#import "UIViewController+LCSideMenuViewController.h"

【问题讨论】:

  • 只是为了确定:您还在编译器选项中添加了标头?

标签: ios objective-c swift


【解决方案1】:

你的桥接头也应该导入LCSideMenuViewController:

#import "LCSideMenuViewController.h"

如果没有方法返回类型的定义,则无法编译 Swift 代码。

【讨论】:

    【解决方案2】:

    如果你把你的类别放在头文件中,它对 swift 文件是可见的。解决方法是将类别移至UIViewController+LCSideMenuViewController.h

    【讨论】:

      猜你喜欢
      • 2015-03-30
      • 1970-01-01
      • 2016-08-02
      • 1970-01-01
      • 2014-08-04
      • 1970-01-01
      • 1970-01-01
      • 2014-12-15
      • 2021-09-26
      相关资源
      最近更新 更多