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