更改为不同的VIewController按钮按

问题描述:

我有一个功能正常的应用程序,我想添加一个新的视图并使用IBAction功能使现有的按钮更改视图。我已经建立了以下,并没有得到任何回应。谢谢你的帮助。更改为不同的VIewController按钮按

MainViewController.h

- (IBAction)showSettings:(UIButton *)sender; 

MainViewController.m

-(void)showSettings:(UIButton*)btn{ 
    SettingsViewController *oView = [[SettingsViewController alloc] initWithNibName:@"SettingsViewController" bundle:nil]; 
    [self.navigationController pushViewController:oView animated:YES]; 
} 

SettingsViewController.h(新视图)相对空的。

SettingsViewController.m

boilerplate 
+0

请不要发布样板代码。 SettingsViewController.m中没有任何内容来自模板。 – rdelmar

+0

对不起,我没有意识到。想想如果我没有发布,肯定会有人问我为什么不发布它! – harp

你有没有连接好您的按钮的TouchUpInside事件您showSettings:方法是什么?这通常在Interface Builder中通过控制拖动完成。如果你在showSettings:的第一行设置了一个断点,当你按下按钮时,你是否点击了断点?如果不是这可能是你的问题。

+0

它迷上了。我在函数showSettings()内部有一个警报,警报将在函数内部的代码之前或之后运行。 – harp

+0

也许你的navigationController为null。顺便说一句,学习一些调试器命令非常值得。你可以在showSettings(它是一个showSettings:方法,而不是showSettings()函数)和调试器类型“po self.navigationController”中停止一个断点,例如,在运行期间检查当前状态... – RobP

+0

以及酷thx。看起来像我需要一个导航控制器。也许你知道这里有一个很好的链接,我试着从苹果库中学习这些东西,但他们的样本总是会产生一堆错误。 – harp

三件事情,以确保:

  1. showSettings:被称为当按钮被窃听(如果不是那么也许你没有按键敲击事件连接到行动的话)
  2. SettingsViewController实例都有alloc和初始化
  3. self.navigationController不是零(如果它是零,也许当前的视图控制器没有嵌入导航控制器的第一位?)。

更新:

现在我们所看到的问题是#3。嵌入您的第一个视图控制器一个UINavigationController所以你可以推第二视图控制器:

  • 选择故事板
  • 选择(菜单)编辑器中的第一个视图控制器 - >嵌入在 - >导航控制器
+0

1.是的,它叫 2.不知道如何检查。 3.我没有添加任何导航控制器,也许这是问题所在?我只添加了一个新的视图控制器和xib文件,以及调用它的按钮和函数。 – harp

+0

@harp,#3 - 也许没关系,这就是问题所在。 – rdelmar

+0

Nerver在没有navigationController的情况下推送其他veiwController。你可以对零对象不做任何事情。 – Chris