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

Schreibe einen Kommentar