如何创建自定义UIStoryBoard

时间:2012-12-25 12:26:58

标签: objective-c uistoryboard

我想创建自己的UIStoryBoard并强制系统使用它(受Jody's answer启发)。

我该怎么做?

未调用创建类@interface MyStoryboard : UIStoryboard

1 个答案:

答案 0 :(得分:10)

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

MyStoryboard.h

@interface MyStoryboard : UIStoryboard
-(id)instantiateViewControllerWithIdentifier:(NSString *)identifier;
@end

MyStoryboard.m

@implementation MyStoryboard

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

@end

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;
}

使用此代码后,每次调用NSLog方法时,您都会看到instantiateViewControllerWithIdentifier:的调用。