UIStoryboard load from app delegate

前端 未结 4 1319
情歌与酒
情歌与酒 2021-01-11 13:24

I am trying to load a UIStoryboard from the app delegate .m in this way:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDi         


        
相关标签:
4条回答
  • 2021-01-11 13:36
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
    
       UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:[NSBundle mainBundle]];
       UIViewController *vc =[storyboard instantiateInitialViewController];
    
       // Set root view controller and make windows visible
       self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
       self.window.rootViewController = vc;
       [self.window makeKeyAndVisible];
    
       return YES;
    }
    

    Try this. I think is missing set root view controller and make windows visible.

    0 讨论(0)
  • 2021-01-11 13:41

    For Swift 4.2 and higher.

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        window = UIWindow(frame: UIScreen.main.bounds)
        let storyboard = UIStoryboard(name: "YourStoryboardName", bundle: Bundle.main)
        let viewController = storyboard.instantiateInitialViewController()
        window?.rootViewController = viewController
        window?.makeKeyAndVisible()
        return true
    }
    
    0 讨论(0)
  • 2021-01-11 13:43

    It doesn't work this way now.

    In the build settings plist there is add an entry for Main Storyboard (or something like that). The all you need in the applicationDidFinishLoading is return YES;

    If you start a new project with storyboards ticked you can see the exact entry.

    When that's in there you don't need to load the initial view as it takes it from the storyboard file (Is Initial View flag).

    HTH

    0 讨论(0)
  • 2021-01-11 13:56

    From your code I see UIWindow object is not initialised.

    You need to initialise it if you don't mention any Storyboard Name in App-Info.plist.

    Also, make the Window key and visible. Please change your code as displayed below:

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        self.window=[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        UIStoryboard *storybord = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:[NSBundle mainBundle]];
        UIViewController *vc =[storybord instantiateInitialViewController];
        [self.window addSubview:vc.view];
        [self.window makeKeyAndVisible];
        return YES;
    }
    
    0 讨论(0)
提交回复
热议问题