2016-10-17 4 views
0

Ok, ich habe zusammen mit einem Tutorial gefolgt und ich habe das abgeschlossen, alles funktioniert gut. Die erste Ansicht, die lädt, ist jedoch ein UITableViewController und ich möchte einen UIViewController.Ändern RootViewController Typ in Swift

Hier ist der Code für das heißt:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
    // Override point for customization after application launch. 

    window = UIWindow(frame: UIScreen.main.bounds) 
    window?.makeKeyAndVisible() 

    window?.rootViewController = UINavigationController(rootViewController: ViewController()) 

    return true 
} 

ich bearbeite diese Linie versucht haben:

UINavigationController(rootViewController: ViewController()) 

zu:

window?.rootViewController = UIViewController(rootViewController: ViewController()) 

Aber dann bin ich diesen Fehler gegeben:

Incorrect argument label in call (have 'rootViewController:', expected 'coder:')

Es fragt mich dann zu 'Fix-it' ich auch, was die Zeile ändert:

window?.rootViewController = UIViewController(coder: ViewController()) 

Aber dann jetzt diese führt den Fehler:

Cannot convert value of type 'ViewController' to expected argument type 'NSCoder'

ich auch versucht haben:

window?.rootViewController = ViewController() 

aber damit wird der Simulator schwarz.

Clarify Frage:

Wie kann ich den ersten Blick zu bekommen, dass Lasten in meinen app vom Typ UIViewController sein?

Antwort

1

Sie sollten UIViewController Unterklasse und Ihre eigene Version machen es funktioniert zu überprüfen, aber was Sie tun ursprünglich fein

let myViewController = SomeViewController() 
let navigationController = UINavigationController(rootViewController: myViewController) 
window?.rootViewController = navigationController 

Dann in SomeViewControllerviewDidLoad gesetzt view.backgroundColor = .red

Wenn Sie das entfernende Navigationsleiste können Sie es auf versteckte

navigationController.navigationBarHidden = true 

alternativ eingestellt ...

let myViewController = SomeViewController() 
window?.rootViewController = myViewController 

Wird auch ... arbeiten, obwohl Sie die Navigationssteuerung im Allgemeinen zu halten suchen sollten .. es View-Controller präsentiert in der Regel macht in Zukunft viel einfacher ...

Der Grund Ihren Simulator goes black ist, weil es funktioniert hat ... du zeigst eine leere UIViewController ... Du musst deine eigene UIViewController Unterklasse erstellen und etwas hinzufügen.

Ihre View-Controller-Unterklasse wie diese sollte mit einem roten Schirm sein ‚Hallo Welt‘ geschrieben in der Mitte

// 
// SomeViewController.swift 
// SomeProject 
// 
// Created by Magoo on 17/10/2016. 
// Copyright © 2016 Magoo. All rights reserved. 
// 

import UIKit 

class SomeViewController: UIViewController { 

    override func viewDidLoad() { 

     super.viewDidLoad() 
     view.backgroundColor = .red 

     let label = UILabel(frame:view.bounds) 
     label.textColor = UIColor.whiteColor() 
     label.text = "Hello world" 

     view.addSubview(label) 
    } 
} 

Das Ergebnis aussehen soll.

+0

Entschuldigung, etwas neu. Was meinst du damit: "Sie müssen Ihre eigene UIViewController-Unterklasse erstellen und ihr etwas hinzufügen." könntest du erklären?Ich habe bereits eine neue Datei vom Typ UIViewController erstellt, die 'class SomeViewController: UIViewController {' – JamesG

+0

In XCode, gehen Sie zu Datei -> Neu -> Datei und wählen Sie Swift File. Dann nenne es SomeViewController.swift ... diese Datei steht dir dann in deinem Projekt zur Verfügung ... und du kannst sie beliebig bearbeiten. – Magoo

+0

Grundsätzlich muss alles, was Sie auf dem Bildschirm anzeigen möchten, in "SomeViewController" sein, das ist die Ansicht, die angezeigt wird. – Magoo