2014-09-10 16 views
5

Ho un framework dylib con alcune sottoclassi UIView fatte in swift che ho usato per usare le nuove cose @IBDesignable e @IBInspectable.Swift Framework <-> interoperabilità ObjC

Allora supponiamo Ho una sottoclasse UITextField in là chiamato MyTextField.swift come questo:

MyTextField.swift

@IBDesignable class MyTextField: UITextField { 

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

Ora si compila e funziona bene in InterfaceBuilder finora tutto bene. Ma quello che devo fare è importare questa sottoclasse speciale nella mia implementazione Objective C del controller per impostare una proprietà nel codice in fase di runtime.

Il quadro (denominato myViews) ha un colpo di testa chiamato myViews.h che sono in grado di importare in controllori di intestazione come questo:

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 

Questo è dove ho' m bloccato! Quindi la classe MyTextField è sconosciuta dalle intestazioni importate. Il myViews.h è stato generato automaticamente. Ho provato a importare le intestazioni di bridging lì dentro senza successo.

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. 

speranza nessuno può darmi una mano. Grazie in anticipo.

+0

Perché il downvote? – Daniel

+0

hai il droide :) Sapresti come esportare quella classe veloce? –

+0

@AlexanderN Sì, lo so! – Daniel

risposta

0

Nella classe Objective-C, prova a importare il modulo rapido come questo:

#import "<ModuleName>-Swift.h"

Dove ModuleName è il nome del modulo che contiene il codice swift

+0

Grazie per la risposta. Ho già provato questo, ma Xcode dice ''MyTextField-Swift.h' file non trovato'. In generale penso di aver bisogno di importare solo il Framework e nell'intestazione del framework ho bisogno di importare le intestazioni di bridging veloci. Ma non ho ancora avuto successo. – Daniel

+0

Ho ricevuto un errore durante l'importazione con '' '#import" MyFramework-Swift.h "' ''. Ma '' '#importa ' '' funziona. Ma attenzione, la prima parte è il * nome del prodotto *, mentre la prima parte dell'header-filename è il * nome del modulo *. Potrebbero essere diversi. –

Problemi correlati