在使用Storyboard时,不要通过Storyboard推送ViewController

时间:2014-10-22 08:28:28

标签: ios objective-c uiviewcontroller storyboard

我在整个互联网上搜索了我的问题,但显然是傻到找不到任何东西。

在我的应用程序中,我正在使用Storyboard,我的大多数ViewController都以这种方式加载(我正在使用导航控制器):

MyViewControllerClass *viewController = [storyboard instantiateViewControllerWithIdentifier:@"myViewController"];
[self.navigationController pushViewController:viewController animated:YES];

现在我的问题是:是否可以在不使用故事板的情况下在代码中推送VC?就像在古代时代一样,但这对我不起作用了:

MyViewControllerClass *viewController = [[MyViewControllerClass alloc] init];
[self.navigationController pushViewController:viewController animated:YES];

请帮帮我,我疯了。

提前致谢。

3 个答案:

答案 0 :(得分:0)

是的,你可以不使用故事板而只需要在app委托中添加导航控制器,之后就可以正常使用了

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
    navigationController = [[UINavigationController alloc] initWithRootViewController:self.viewController];

    self.window.rootViewController=navigationController;

    [self.window makeKeyAndVisible];

    return YES;

}

答案 1 :(得分:0)

您可以创建xib文件并将其推送。没有视觉就无法推动。

ViewControllernew* vv = (ViewControllernew*)[[[NSBundle mainBundle] loadNibNamed:@"ViewControllernew" owner:self options:nil] objectAtIndex:0];
[self.navigationController pushViewController:vv animated:YES];

答案 2 :(得分:-1)

可以确认它确实有效。 如果viewController为nil,Push将以这种方式执行。你的alloc init是否实际创建了一个实例?