MainViewController(storyboard)无法推送我的UITableViewController

时间:2012-01-16 18:38:37

标签: ios5 xcode4.2 uitableview storyboard

我刚刚使用模板Utility Application在xcode 4.2中创建了一个新项目。这是我的项目层次结构:

enter image description here

然后,我尝试从MainViewController推送没有XIB文件的UITableViewController(Batikla:UITableViewController)。 首先,我在MainViewController故事板中放了一个按钮,并将其连接到我的ibaction方法:

@implementation MainViewController
@synthesize managedObjectContext = _managedObjectContext;
@synthesize flipsidePopoverController = _flipsidePopoverController;

    - (IBAction)batikla{
        NSLog(@"test 1");

        Batikla *batikla = [[Batikla alloc] initWithStyle:UITableViewStylePlain];
        batikla.title = [NSString stringWithFormat:@"Test"];
        [self.navigationController pushViewController:batikla animated:YES];
        [batikla release];

        NSLog(@"test 2");

}

点击按钮后,没有视图被推送到视图,而是出现在控制台中:

There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin".Attaching to process 58916.
2012-01-17 01:30:47.569 iBadah[58916:207] test 1
2012-01-17 01:30:47.572 iBadah[58916:207] test 2

该方法已被解雇,但为什么我的uitableviewcontroller没有被推入屏幕?

2 个答案:

答案 0 :(得分:1)

推送和弹出需要导航控制器。实用程序模板不包含导航控制器。

答案 1 :(得分:0)

是的,我明白了.. TJ是仪式,我在这里缺少导航控制器 所以这里: 在AppDelegate.m didFinishLaunchingWithOptions中,我注释掉了默认代码,并使用导航视图控制器,检查出来:(因为我使用了实用工具模板,我假设你也得到了相同的代码)

// Override point for customization after application launch.
    UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
    MainViewController *controller = (MainViewController *)navigationController.topViewController;
    //MainViewController *controller = (MainViewController *)self.window.rootViewController;
    controller.managedObjectContext = self.managedObjectContext;
    return YES;

并且不要忘记在故事板中添加uinavcontroller,你可以从 - >编辑 - >嵌入 - >导航控制器(点击主视图控制器后),如下所示: enter image description here 你很高兴去那里。

希望这能有所帮助。 感谢