2014-09-10 5 views
5

У меня есть каркас dylib с некоторыми подклассами UIView, выполненными в swift, которые я сделал, чтобы использовать новые вещии @IBInspectable.Swift Framework ObjC interoperation

Так позволяет сказать, что у меня есть UITextField подкласс там назван MyTextField.swift так:

MyTextField.swift

@IBDesignable class MyTextField: UITextField { 

    // some properties etc. 
    // content is irrelevant 
} 

Теперь компилирует и хорошо работает в 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 

Это где я m застрял! Таким образом, класс 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. 

Надежда кто-нибудь может помочь мне. Заранее спасибо.

+0

Почему downvote? – Daniel

+0

у вас есть дроид :) Не могли бы вы узнать, как экспортировать этот быстрый класс? –

+0

@AlexanderN Да, я делаю! – Daniel

ответ

0

В вашей Objective-C класса, попробуйте импортировать свой быстрый модуль, как это:

#import "<ModuleName>-Swift.h"

Где ModuleName это имя модуля, содержащего быстрый код

+0

Благодарим вас за ответ. Я уже пробовал это, но Xcode говорит, что файл MyTextField-Swift.h не найден. В общем, я думаю, мне нужно просто импортировать Framework и в заголовок фреймворка мне нужно импортировать быстрые заголовки мостов. Но я еще не успел. – Daniel

+0

У меня возникла ошибка при импорте с '' '#import 'MyFramework-Swift.h" '' '. Но '' '#import ' '' работает. Но будьте осторожны, первая часть - это * имя продукта *, а первая часть имени-заголовка - это * имя модуля *. Они могут быть разными. –

Смежные вопросы