Swift框架< - > ObjC互操作

Dan*_*iel 6 xcode frameworks objective-c ios swift

我有在迅速取得了一定的UIView子类,我已经做了使用新的一个dylib框架@IBDesignable@IBInspectable东西.

所以我可以说我有一个UITextField子类在那里命名MyTextField.swift如下:

MyTextField.swift

@IBDesignable class MyTextField: UITextField {

    // some properties etc.
    // content is irrelevant   
}
Run Code Online (Sandbox Code Playgroud)

现在它在InterfaceBuilder中编译并运行良好到目前为止都很好.但我需要做的是将这个特殊的子类导入到控制器的Objective C实现中,以便在运行时在代码中设置属性.

框架(命名myViews)有一个标题myViews.h,我可以将其导入控制器标头,如下所示:

MyViewController.h:

@import myViews;

#import <UIKit/UIKit.h>

#import "myViews.h"

@interface MyViewController : UIViewController

@property(weak, nonatomic) IBOutlet MyTextField *txtName; // <-- This is the problem!

@end
Run Code Online (Sandbox Code Playgroud)

这就是我被困住的地方!因此,MyTextField从导入的标题中未知该类.这myViews.h是自动生成的.我试图在那里导入桥接头没有成功.

myViews.h:

#import <UIKit/UIKit.h>

//! Project version number for myViews.
FOUNDATION_EXPORT double myViewsVersionNumber;

//! Project version string for myViews.
FOUNDATION_EXPORT const unsigned char myViewsVersionString[];

// In this header, you should import all the public headers of your framework
// using statements like #import <myViews/PublicHeader.h>

#import <myViews/MyTextField-Swift.h> // <-- This is what I've tried to import here which doesn't work as well.
Run Code Online (Sandbox Code Playgroud)

希望有人可以帮助我.提前致谢.

joh*_*lem 0

在您的 Objective-C 类中,尝试像这样导入您的 swift 模块:

#import "<ModuleName>-Swift.h"

其中 ModuleName 是包含 swift 代码的模块的名称