Geladen Feder, aber die Aussicht Steckdose war nicht gesetzt - Swift-edition
Ich habe ein Projekt, das alle in Objective-C, außer für meine view-controller, die in Swift.
Wenn ich es laufen lasse, bekomme ich die Fehlermeldung
Terminating app due to uncaught exception
'NSInternalInconsistencyException', reason: '-[UIViewController
_loadViewFromNibNamed:bundle:] geladen "..." Spitze, aber die Aussicht Steckdose war nicht gesetzt.'
Also öffnete ich meine nib Datei, schau mal bei "File' s Owner", und ich sehe, dass die Sicht nicht einmal zeigen, wie eine Steckdose, an alle.
Für mein Alter view-controller (objective c), wird die Ansicht Auslass zeigen, nicht.
In meine Swift-view-controller, ich habe versucht, überschreiben Sie das "Ansicht" - variable von UIViewController, um ihn zu zwingen, es zu einer @IBOutlet, aber es beschwerte sich über die "Ansicht" variable ist vom Typ UIView, sich über UIView?, und beschwerte sich über UIView!.
Hier sind vereinfachte Versionen von
meiner AppDelegate.h
#import <UIKit/UIKit.h>
@class MyViewController;
@class MyViewControllerSwift;
@interface MSAppDelegate : UIResponder <UIApplicationDelegate>
{
}
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) UIViewController *viewController;
@end
AppDelegate.m
#import "MyAppDelegate.h"
#import "MyViewController.h"
#import "MySwift-Swift.h"
#import <UIKit/UIKit.h>
@implementation MyAppDelegate
static BOOL USE_SWIFT_VIEW_CONTROLLER = YES;
- (void)dealloc
{
[_window release];
[_viewController release];
[super dealloc];
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
//Override point for customization after application launch.
id viewControllerPtr = nil;
if(USE_SWIFT_VIEW_CONTROLLER)
{
viewControllerPtr = [MyViewControllerSwift alloc];
}
else
{
viewControllerPtr = [MyViewController alloc];
}
UIViewController* vController = nil;
if(USE_SWIFT_VIEW_CONTROLLER)
{
vController = [[viewControllerPtr initWithNibName:@"MyViewControllerSwift" bundle:nil] autorelease];
}
else
{
vController = [[viewControllerPtr initWithNibName:@"MyViewController" bundle:nil] autorelease];
}
self.viewController = vController;
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;
}
ViewController.swift
import Foundation
import AVFoundation
@objc class MyViewControllerSwift : UIKit.UIViewController {
var player : AVFoundation.AVAudioPlayer?;
@IBOutlet weak var myTextView : UITextView!;
required init(coder aDecoder : NSCoder) {
super.init(coder:aDecoder);
}
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
super.init(nibName:nibNameOrNil, bundle:nibBundleOrNil);
}
override func viewDidLoad() {
super.viewDidLoad();
println("Using MyViewControllerSwift");
}
deinit {
//TODO
}
}
Was muss ich tun, um meine Ansicht angezeigt werden?
Dank.
(Ja, das ist eine ähnliche Frage zu Geladen Feder, aber die Aussicht Steckdose war nicht gesetzt - neu InterfaceBuilder aber die Aussicht Steckdose nicht angezeigt wird. )
InformationsquelleAutor der Frage cowlinator | 2014-09-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
(Datei-Besitzer -> das Dritte Symbol -> custom class : YourViewController )
Init dein ViewController etwa so:
Wird es funktionieren. Nicht alle Manipulationen mit Aussicht.
InformationsquelleAutor der Antwort user3677173
Wenn Sie alles versucht haben und Sie dennoch diese Fehlermeldung erhalten, versuchen Sie erneut erstellen der class-Datei von Grund auf aber denken Sie daran, wählen Sie die "erstellen Sie Auch XIB-Datei" Kontrollkästchen. Dies wird auto-link hat ein paar Elemente, die sind nicht verknüpft, wenn erstellen diese Dateien separat. Nachdem dieser erstellt ist, können Sie wahrscheinlich Ausschneiden und einfügen, alles auf die neue XIB und es sollte funktionieren.
Ich bin auf der Suche nach diesem Problem speziell mit dem erstellen von Dateien, die separat in Swift.
InformationsquelleAutor der Antwort Travis M.
Ich hatte das gleiche problem , mein 2. Blick auf meine view-controller konnte nicht geladen werden . Ich habe die view ' s name in Eigenschaft(als ich hatte zuvor gegebene "Anzeigen"). Ihre bestehende view-controller bereits Referenzen zur Ansicht auf der Oberseite der es mit dem gleichen Namen(Anzeigen). Daher der Fehler . Versuchen Sie, die Steckdose Namen . Es funktionierte perfekt in meinem Fall .
InformationsquelleAutor der Antwort user5553647