UIViewController Objective-C类在Swift中不可用

时间:2015-01-25 09:57:56

标签: ios objective-c swift

我在其他问题中读到可以毫不费力地在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"

2 个答案:

答案 0 :(得分:2)

您的桥接标头还应导入LCSideMenuViewController

#import "LCSideMenuViewController.h"

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

答案 1 :(得分:0)

如果将类别放在头文件中,则swift文件将显示该类别。修复方法是将类别移至UIViewController+LCSideMenuViewController.h