如何创建自定义UIStoryBoard

Dej*_*ell 8 objective-c uistoryboard

我想创建自己的UIStoryBoard并强制系统使用它(灵感来自Jody的答案).

我该怎么做?

@interface MyStoryboard : UIStoryboard没有调用创建类.

das*_*ght 10

你是在正确的路径子类化UIStoryboard:你现在需要做的就是将它插入你的应用程序.最简单的方法是在您的应用程序委托application:didFinishLaunchingWithOptions:方法中:

MyStoryboard.h

@interface MyStoryboard : UIStoryboard
-(id)instantiateViewControllerWithIdentifier:(NSString *)identifier;
@end
Run Code Online (Sandbox Code Playgroud)

MyStoryboard.m

@implementation MyStoryboard

-(id)instantiateViewControllerWithIdentifier:(NSString *)identifier {
    NSLog(@"Instantiating: %@", identifier);
    return [super instantiateViewControllerWithIdentifier:identifier];
}

@end
Run Code Online (Sandbox Code Playgroud)

MyAppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window.backgroundColor = [UIColor whiteColor];
    UIStoryboard *storyboard = [MyStoryboard storyboardWithName:@"<identifier-of-your-storyboard>" bundle:nil];
    self.window.rootViewController = [storyboard instantiateInitialViewController];
    [self.window makeKeyAndVisible];
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

使用此代码,您将看到NSLog每次调用instantiateViewControllerWithIdentifier:方法时的调用.