2014-06-19 6 views
24

मैं अनुप्रयोग प्रतिनिधि में rootViewController सेट करना चाहते हैं ..स्विफ्ट के साथ rootViewController स्थापित करने के लिए कैसे, 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

इसके सचमुच एक ही उद्देश्य सी – Jack

+0

हाँ में के रूप में कोड की पंक्ति है, लेकिन मैं वास्तव में नहीं हूँ कि उद्देश्य-सी से परिचित –

+0

यदि आपके स्टोरीबोर्ड का उपयोग करना आपको रूट व्यू कंट्रोलर सेट करने की आवश्यकता नहीं है। यदि आप स्टोरीबोर्ड का उपयोग नहीं कर रहे हैं तो आपको होना चाहिए। – Jack

उत्तर

26

आप कुछ इस तरह कर सकते हैं।

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

    var rootView: MyRootViewController = MyRootViewController() 

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

    return true 
} 
+4

मैंने अभी इस कोड का उपयोग एक्सकोड 7.1 पर किया है, और संकलक ने कहा है कि चूंकि रूट व्यू कभी उत्परिवर्तित नहीं होता है, इसलिए इसे 'var' के बजाय' let' कीवर्ड 'के साथ स्थिर बना दिया जा सकता है। – bneely

11

यह दिखाने के लिए कि कुछ स्टोरीबोर्ड का उपयोग नहीं कर रहे हैं, तो कुछ चीजें आपको करने की ज़रूरत है। फ़ंक्शन एप्लिकेशन के अंदर AppDelegate के अंदर।

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

जबकि स्टोरीबोर्ड उत्तर मेरे लिए सही नियंत्रक प्रस्तुत करता है, यह उत्तर आग करता है लेकिन मैं एक ब्लैक स्क्रीन के साथ समाप्त होता हूं: -/ – SeeCoolGuy

44

आप एक स्टोरीबोर्ड का उपयोग कर रहे हैं और प्रोग्राम के रूप में अपने rootViewController सेट करना चाहते हैं, पहले यह सुनिश्चित ViewController करते हैं तो पहचान निरीक्षक में एक स्टोरीबोर्ड आईडी है।

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

मैं स्विफ्ट 2.0 का उपयोग कर रहा हूं और यह मामूली परिवर्तन स्टोरीबोर्ड में मेरे लिए काम करता है 'रूट नियंत्रक = स्टोरीबोर्ड दें। UIViewController ' – SeeCoolGuy

14

स्विफ्ट 2.0: फिर AppDelegate में निम्न कार्य

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

अच्छा समाधान .. –

+1

स्विफ्ट 3 में काम नहीं कर रहा है तत्काल ViewControllerWithIdentifier ("MyViewController")। मुझे नहीं पता क्यों –

0
if let tabBarController = self.window!.rootViewController as? UITabBarController 
    { 
     tabBarController.selectedIndex = 0 
    } 
संबंधित मुद्दे