【问题标题】:moving between view controllers without using a segue在视图控制器之间移动而不使用 segue
【发布时间】:2012-12-27 21:57:59
【问题描述】:

我知道应该这么简单,但是如何在不使用 segue 的情况下在 iPad 上的视图控制器之间移动?我有一个主菜单视图控制器,上面有一个按钮,它调用 newViewButton 操作。我想打开名为 MonitorMenu 的视图控制器。

- (IBAction)newViewButton:(id)sender {

    [self.navigationController pushViewController:MonitorMenu  animated:NO];

}

它说 MonitorMenu 是一个未知界面。

我做错了什么?

【问题讨论】:

  • 你是否声明了你的 MonitorMenu 对象,它是否继承自 ViewController 类?
  • 再一次 - 如果这很简单,我很抱歉 - 但你是什么意思?你如何声明 MonitorMenu 对象?当我创建 MonitorMenu 视图控制器时,我为视图控制器添加了 h 和 m 文件 - 这就是从 ViewController 类继承的意思吗?
  • 是的,我只是想确保 MonitorMenu ViewController 没有从 NSObject 或其他东西继承。我将添加一些代码来推送导航控制器。
  • @Richard 你在用故事板吗?
  • 是的 - 我最初使用 segue 设置它,但我删除了它。会不会留下什么东西把事情搞砸了?删除它的原因是我想在推送之前对页面进行一些检查。支票很好,但我无法推动。

标签: xcode ipad ios6


【解决方案1】:

如果您使用情节提要,您可以执行以下操作:

1)通过单击实际视图下方栏中的黄色小球,选择要在情节提要上推送的视图控制器 (MonitorMenu)。

2) 然后在“Identity Inspector”选项卡中为其设置一个“Storyboard ID”。 (在你的情况下,我会使用“monitorMenuView”或类似的东西)

3) 在您想要“推送”它的视图控制器的 .h 文件中,导入您想要推送的类的 .h:

#import "MonitorMenu.h"

4) 然后,在您的 IBAction 中:

- (IBAction)newViewButton:(id)sender {

    MonitorMenu *monitorMenuViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"monitorMenuView"];
    [self.navigationController pushViewController:monitorMenuViewController animated:NO];

}

【讨论】:

  • 在您的 .m 文件中尝试#import "MonitorMenu.h"。尝试此操作时是否收到任何警告?
  • 您是否在身份检查器中为情节提要中的视图控制器设置了自定义类?
  • 我唯一能想到的另一件事是,如果您的按钮未(正确)连接到 IBAction。我会先检查一下,然后在 IBAction 方法中放置一个 NSLog 以查看是否实际发生了任何事情。
  • 刚刚试了一下,把 NSLog(@"working");在 [self.navigationController pushViewController ... 行之后。它在 NSLog 中显示“工作”,因此代码正在运行。不知道出了什么问题。感谢您的帮助-别担心。我会坚持下去的。再次感谢。
  • 试试这个NSLog(@"ViewController: %@", monitorMenuView); IBAction最后一行中的视图控制器,并在实例化它时将“monitorMenuView”替换为您调用的任何内容。它找到正确的视图控制器了吗?
【解决方案2】:

这是我所指的关于声明 MonitorMenu 对象的内容:

在当前 ViewController 的 .h 文件中:

           MonitorMenu *_menu;

在当前 ViewController 的 .m 文件中:

           //declaring your Monitor Menu object for use
           //then pushing that view onto the stack.
           _menu = [[MonitorMenu alloc] initWithNibName:@"MonitorMenu" bundle:nil];
          [self.navigationController pushViewController:_menu NO];

【讨论】:

  • 感谢您的帮助。我已经尝试过了,当我单击按钮时没有任何反应。我已经在其中放置了一个断点,并且代码已运行/访问,但它只是通过并且未加载 MonitorMenu 视图。
  • 您是否在视图控制器中导入了 MonitorMenu.h 文件?
  • 你的意思是把它包含在 MainMenu 的 .m 文件中吗? #import "MonitorMenu.h" - 是的,我已经做到了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-24
相关资源
最近更新 更多