2016-09-25 2 views
0

Ich versuche, einen View-Controller auf einen Navigationscontroller zu schieben, ohne ein Storyboard zu entwerfen. Ist das möglich, da ich neu bei Swift bin? Ich habe meine Navigation-Controller in appdelegate.swift Datei:Fehler beim Versuch, programmgesteuert eine Controller-Datei zu einem Navigationscontroller hinzuzufügen, ohne Storyboard zu erstellen

let viewController: UIViewController = ViewController(nibName: nil, bundle: nil) 
viewController.view.backgroundColor = UIColor.white 
let navController: UINavigationController = UINavigationController(rootViewController: viewController) 


self.window = UIWindow(frame: UIScreen.main.bounds) 
self.window?.backgroundColor = UIColor.darkGray 
self.window?.rootViewController = navController 
self.window!.makeKeyAndVisible() 

Und jetzt in ViewController.swift Datei, wenn der Benutzer die Schaltfläche unten klickt ist die Datei, wenn ich versuche, die signInController hinzuzufügen:

func SignIn(sender: UIButton!) { 
    print("Im, here") 
    let storyboard = UIStoryboard(name: "Main", bundle: nil) 
    let controller = storyboard.instantiateViewController(withIdentifier: "signInController") as! signInController 
    self.navigationController?.pushViewController(controller, animated: true) 
} 

Unten ist mein Fehler:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Storyboard (<UIStoryboard: 0x608000269600>) doesn't contain a view controller with identifier 'signInController''

Frage: Muss ich ein Storyboard erstellen und zur Inspektor-ID gehen, um die Storyboard-ID hinzuzufügen? Aber was, wenn ich das erreichen wollte, ohne eine Storyboard-Datei zu erstellen?

Antwort

1

Wenn Sie nicht ein Storyboard verwenden, dann sollten Sie nicht versuchen, Ihre Anmelde-View-Controller aus dem Storyboard zu erstellen. Ändern Sie den Code der View-Controller erstellen direkt:

func SignIn(sender: UIButton!) { 
    print("I'm, here") 
    let controller = signInController() 
    self.navigationController?.pushViewController(controller, animated: true) 
} 

BTW - Sie müssen alles umbenennen Standard-Namenskonventionen zu folgen. Klassennamen sollten mit Großbuchstaben beginnen. Alle Methoden-, Variablen- und Parameternamen sollten mit Kleinbuchstaben beginnen.

+0

@Maddy vielen Dank. Empfiehlst du, Storyboards zu verwenden oder nicht, um ein Projekt zu entwickeln? – user3497437

+0

Das liegt an dir. Ich habe sie nie in 8 Jahren iOS-Entwicklung verwendet. Ich bevorzuge Code, aber die meisten Leute nicht. – rmaddy

+0

Ok. Ist es nur Vorliebe? Ich bin neu bei IOS, möchte aber ohne Storyboard lernen? Wenn ich kein Storyboard verwende, muss ich XIB/NIBs verwenden – user3497437

1

Nun, Sie möchten einen ViewController erstellen, ohne das Storyboard zu verwenden, und Sie versuchen immer noch, das Storyboard in Ihrem Code zu verwenden.

Versuchen etwas Ähnliches statt:

var window: UIWindow? 
var navigationController: UINavigationController? 

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
    // Override point for customization after application launch. 
    self.window = UIWindow(frame: UIScreen.main.bounds) 
    // Override point for customization after application launch. 
    self.window!.backgroundColor = UIColor.white 
    self.window!.makeKeyAndVisible() 

    let myViewController: YourNewViewController = YourNewViewController() 
    self.navigationController = UINavigationController(rootViewController: myViewController!) 
    self.window!.rootViewController = self.navigationController 
    return true 
} 
+0

danke. Ist es besser, mit Storyboards oder ohne zu entwickeln? – user3497437

+0

Ich bevorzuge Storyboard. 1: Sie erhalten einen besseren Überblick über Ihre gesamte Projektansicht. 2: Sie bekommen viel für "frei". 3: Es ist viel einfacher, die Beschränkungen für Ihre Elemente zu handhaben. Das ist meiner Meinung nach, wenn Sie Hilfe mit dem Storyboard benötigen, werde ich froh sein, @ user3497437 –

+0

Dank zu helfen. Wird versuchen, einen Überblick im Storyboard zu erstellen, wird aber versuchen, in allen Code zu entwickeln. Ich weiß, es wird viel Arbeit sein, aber vielleicht ein gutes Verständnis bekommen – user3497437

Verwandte Themen