我在其他问题中读到可以毫不费力地在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"
答案 0 :(得分:2)
您的桥接标头还应导入LCSideMenuViewController
:
#import "LCSideMenuViewController.h"
如果没有方法返回类型的定义,则无法编译Swift代码。
答案 1 :(得分:0)
如果将类别放在头文件中,则swift文件将显示该类别。修复方法是将类别移至UIViewController+LCSideMenuViewController.h
。