挣扎于导航控制器的基础知识



我一直在拉我的头发试图得到一个基本的NavigationController工作,这将允许我在视图之间轻松地来回切换。我觉得我在进步,但我显然漏掉了一些关键的东西。我现在有了我的模板应用推送视图,但只通过添加指向目标NIB的initWithNibName。试图向这些辅助视图添加任何功能都会导致应用程序崩溃,并出现SIGABRT错误。我无法想象这是对的…如果我只有一个普通的NIB,那么开关工作得很好。我添加到secondViewcontroller的唯一东西是一个标签和一个按钮,用一些垃圾文本填充标签。然而,当我按下开关按钮时,我得到了SIGABRT。我希望能够把功能放在不同的视图控制器中。我觉得我就快成功了,但这太让人恼火了。谁能指出我哪里做错了?

#import "mainViewController.h"

@implementation mainViewController
-(void)switchView {
    UIViewController *secondViewController =   [[UIViewController alloc] initWithNibName:@"secondViewController" bundle:nil];
    secondViewController.title = @"My First View";
    [self.navigationController pushViewController:secondViewController animated:YES];  
    [secondViewController release];
}
-(void)switchViewTwo {
    UIViewController *thirdViewController =   [[UIViewController alloc]  initWithNibName:@"thirdViewController" bundle:nil];
   thirdViewController.title = @"My second View";
   thirdViewController.view.backgroundColor = [UIColor redColor];
   [self.navigationController pushViewController:thirdViewController animated:YES];
   [thirdViewController release];
}

代替

UIViewController *secondViewController =   [[UIViewController alloc] initWithNibName:@"secondViewController" bundle:nil];

把这个:

MySecondViewController *secondViewController =   [[MySecondViewController alloc] initWithNibName:@"secondViewController" bundle:nil];

我的MySecondViewController应该是你的UIViewController的名字,也检查XIB的名字真的叫secondViewController。最后:

  • 转到你的XIB
  • 选择文件的所有者文件
  • 选择inspector中的第三个选项卡。
  • 检查类名。应该是MySecondViewController而不是UIViewController

最新更新