与导航控制器基础知识斗争

Posted

技术标签:

【中文标题】与导航控制器基础知识斗争【英文标题】:Struggling with Navigation Controller basics 【发布时间】:2011-07-26 19:22:09 【问题描述】:

我一直在努力让一个基本的 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];

【问题讨论】:

我要做的第一件事是浏览实现文件,并将类名大写,因为类名和实例变量都是小写的,所以编译器无法区分。例如将 secondViewController *secondViewController 更改为 SecondViewController *secondViewController。 请发布整个崩溃日志。我怀疑问题出在按钮本身,而不是视图控制器中的方法。 我同意,发布崩溃日志 【参考方案1】:

代替

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

把这个:

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

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

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

【讨论】:

以上是关于与导航控制器基础知识斗争的主要内容,如果未能解决你的问题,请参考以下文章

《SLAM导航机器人基础》第三章:单片机与STM32

导航栏与状态栏

将标签栏控制器与导航控制器一起使用时出现问题

Swift 2:更改与选项卡栏控制器相关的视图上的导航标题

动作后迅速删除与导航视图控制器的连接

无法让状态恢复与编程导航控制器一起使用