tutorial raywenderlich ios objective-c cocoa-touch uistoryboard

ios - tutorial - raywenderlich



Consigue el guión gráfico principal en tiempo de ejecución (2)

Aquí hay una categoría de UIStoryboard que hará esto:

UIStoryboard + LDMain.h

#import <UIKit/UIKit.h> @interface UIStoryboard (LDMain) + (instancetype)LDMainStoryboard; @end

UIStoryboard + LDMain.m

#import "UIStoryboard+LDMain.h" UIStoryboard *_mainStoryboard = nil; @implementation UIStoryboard (LDMain) + (instancetype)LDMainStoryboard { if (!_mainStoryboard) { NSBundle *bundle = [NSBundle mainBundle]; NSString *storyboardName = [bundle objectForInfoDictionaryKey:@"UIMainStoryboardFile"]; _mainStoryboard = [UIStoryboard storyboardWithName:storyboardName bundle:bundle]; } return _mainStoryboard; } @end

Aquí hay un enlace a la esencia

Me gustaría poder simplemente llamar a [UIStoryboard mainStoryboard] para obtener el guión gráfico de iPad o iPhone en tiempo de ejecución.


Puede usar [UIStoryboard storyboardWithName:storyboardName bundle:bundle] si el storyboard aún no se ha cargado.

Si tiene, sin embargo, esto cargará una nueva copia.

También puede usar viewController.storyboard para obtener el existente. Si tiene un mainWindow como parte de su delegado de aplicación (probablemente lo tenga), puede obtener el rootViewController.storyboard de eso.

Algo como:

UIApplication *application = [UIApplication sharedApplication]; MyAppDelegate *myAppDelegate = ((MyAppDelegate *)application).delegate; return myAppDelegate.mainWindow.rootViewController.storyboard;

Si no, esto podría funcionar para usted:

UIApplication *application = [UIApplication sharedApplication]; UIWindow *backWindow = application.windows[0]; return backWindow.rootViewController.storyboard