2014-06-19 11 views
24

voglio impostare il RootViewController nel delegato app ..Come impostare il RootViewController con Swift, iOS 7

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool { 

    var rootView: MyRootViewController = MyRootViewController() 
    //Code to set this viewController as the root view?? 


    return true 

} 
+0

suo letteralmente la stessa riga di codice come in c obiettivo – Jack

+0

Sì, ma io non sono davvero così familiarità con Objective-C. –

+0

Se si utilizzano gli storyboard non è necessario impostare il controller della vista radice. Se non stai usando gli storyboard, dovresti esserlo. – Jack

risposta

26

si può fare qualcosa di simile.

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool { 

    var rootView: MyRootViewController = MyRootViewController() 

    if let window = self.window{ 
      window.rootViewController = rootView 
    } 

    return true 
} 
+4

Ho appena usato questo codice su Xcode 7.1, e il compilatore ha dichiarato che dal momento che rootView non è mai mutato, potrebbe essere reso costante con la parola chiave 'let' invece di' var'. – bneely

11

Per visualizzarlo ci sono alcune cose che devi fare se non stai usando uno storyboard. All'interno di AppDelegate all'interno dell'applicazione della funzione.

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

    let frame = UIScreen.mainScreen().bounds 
    window = UIWindow(frame: frame) 

    let itemsViewControler: UITableViewController = BNRItemsViewController() 
    if let window = self.window{ 
     window.rootViewController = itemsViewControler 
     window.makeKeyAndVisible() 
    } 

    return true 
} 
+1

mentre la risposta dello storyboard presenta per me il controller corretto, questa risposta sparerà ma finirò con uno schermo nero: -/ – SeeCoolGuy

44

Se si utilizza uno storyboard e si desidera impostare la vostra RootViewController a livello di codice, prima assicurarsi che il ViewController ha un ID Storyboard in Impostazioni Identità. Poi nel AppDelegate effettuare le seguenti operazioni:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 

    // get your storyboard 
    let storyboard = UIStoryboard(name: "Main", bundle: nil) 

    // instantiate your desired ViewController 
    let rootController = storyboard.instantiateViewControllerWithIdentifier("MyViewController") as! UIViewController 

    // Because self.window is an optional you should check it's value first and assign your rootViewController 
    if let window = self.window { 
     window.rootViewController = rootController 
    } 

    return true 
} 
+1

sto usando Swift 2.0 e questo piccolo cambiamento ha funzionato per me nello storyboard 'lascia rootController = storyboard. instantiateViewControllerWithIdentifier ("MyViewController") come UIViewController' – SeeCoolGuy

14

Swift 2.0:

var window: UIWindow? 
var storyboard:UIStoryboard? 

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 

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

    storyboard = UIStoryboard(name: "Main", bundle: nil) 
    let rootController = storyboard!.instantiateViewControllerWithIdentifier("secondVCID") 

    if let window = self.window { 
    window.rootViewController = rootController 
    } 
+0

Nice Solution .. –

+1

non funziona in Swift 3. Non so perché –

0
if let tabBarController = self.window!.rootViewController as? UITabBarController 
    { 
     tabBarController.selectedIndex = 0 
    } 
Problemi correlati