2016-01-06 5 views
6

Ich habe ein Framework mit einem View-Controller namens "AuthenticationViewController.h" mit der Nib "AuthenticationViewController.xib" erstellt. Und ein zu testendes Beispielprojekt hat AuthenticationViewController vorgestellt. In Objective-C:Wie man einen View-Controller aus einem externen Framework in Swift präsentiert?

NSString *frameworkDirPath = [[NSBundle mainBundle] privateFrameworksPath]; 
NSString *frameworkBundlePath = [frameworkDirPath stringByAppendingPathComponent:@"SendOTPFramework.framework"]; 
NSBundle *frameworkBundle = [NSBundle bundleWithPath:frameworkBundlePath]; 
AuthenticationViewController *authenticationViewController = [[AuthenticationViewController alloc]initWithNibName:@"AuthenticationViewController" bundle:frameworkBundle]; 
authenticationViewController.delegate = self; 
[self presentViewController:authenticationViewController animated:YES completion:nil]; 

was für mich funktioniert.

Aber wenn ich folgenden Code in Swift verwenden:

let frameworkBundle = NSBundle(identifier: "SendOTPFramework") 

let authViewControler :AuthenticationViewController = AuthenticationViewController.init(nibName: "AuthenticationViewController", bundle: frameworkBundle) 
authViewControler.delegate = self 
self.presentViewController(authViewControler, animated: true, completion: nil) 

Die App stürzt mit Fehler:? -

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle (loaded)' with name 'AuthenticationViewController''

Antwort

2

NSBundle(identifier: "SendOTPFramework"), nicht NSBundle(path: <#T##String#>) Sind Sie sicher, dass es eine verfügbare Kennung Sie verwendet unterschiedliche Funktion in verschiedenen Sprachen

+0

Ist der "Bezeichner" die Paketkennung des im Projekt enthaltenen Frameworks. Oder der Framework-Name enthalten. –

+0

@HussainChhatriwala Die Bündel-ID des Frameworks. Sie können auch die Pfadfunktion in swift verwenden. – Lumialxk

+0

Die oben genannten funktionierten in der Lage, den Controller zu öffnen. aber immer noch stürzt App nach wenigen Sekunden auf App Delegate ohne Absturzprotokolle ab. –

Verwandte Themen