我希望能够[UIStoryboard mainStoryboard]
在运行时简单地调用以获取 iPad 或 iPhone 故事板。
问问题
7881 次
2 回答
21
这是一个 UIStoryboard 类别,可以做到这一点:
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
这是要点的链接
于 2013-10-11T21:36:29.343 回答
13
[UIStoryboard storyboardWithName:storyboardName bundle:bundle]
如果情节提要尚未加载,则可以使用。
但是,如果有,这将加载一个新副本。
您也可以使用viewController.storyboard
来获取现有的。如果你有一个mainWindow
作为你的应用程序委托的一部分(你可能有),你可以得到rootViewController.storyboard
它。
就像是:
UIApplication *application = [UIApplication sharedApplication];
MyAppDelegate *myAppDelegate = ((MyAppDelegate *)application).delegate;
return myAppDelegate.mainWindow.rootViewController.storyboard;
如果没有,这可能对您有用:
UIApplication *application = [UIApplication sharedApplication];
UIWindow *backWindow = application.windows[0];
return backWindow.rootViewController.storyboard
于 2013-10-11T22:37:59.973 回答