【问题标题】:pushViewController debuggingpushViewController 调试
【发布时间】:2009-05-19 18:44:25
【问题描述】:

我正在尝试(从我在 heirachy 中的第三个孩子)使用以下内容加载根视图。这不起作用,运行以​​下代码时出现以下错误。

-[DetailViewController clickButton:]: unrecognized selector sent to instance 0x1161e00' 

代码:

 MapViewController *dvController = [[MapViewController alloc] initWithNibName:@"MapView" bundle:[NSBundle mainBundle]];
        [self.navigationController pushViewController:dvController animated:YES];
        [dvController release];
        dvController = nil;

这个完全相同的代码适用于其他视图,知道如何调试它。

【问题讨论】:

  • 不确定您的最终目标是什么。您想向 RootViewController 上的方法发送消息吗?或者,你想显示 RootViewController(例如弹回 rootViewController)?
  • 基本上我想弹回到在该视图中加载了另一个视图的 rootViewController。

标签: iphone cocoa-touch uikit sdk uinavigationcontroller


【解决方案1】:

您编写的用于创建 MapViewController 并将其推送到视图控制器堆栈的代码是正确的。

无法识别的选择器错误告诉您,您正在发送试图调用一个不存在的方法(名为 clickButton:)。

我怀疑是拼写错误。我认为您很可能定义了一个按钮,该按钮调用代码来创建新视图。该方法应如下所示:

-(void) clickButton: (id) sender {
    MapViewController *dvController = [[MapViewController alloc] initWithNibName:@"MapView"  bundle:[NSBundle mainBundle]];
    [self.navigationController pushViewController:dvController animated:YES];
    [dvController release];
    dvController = nil;
}

我会检查您是否有“:(id) sender”部分。在实现 -(void) clickButton {} 方法之前,我犯了一个错误,但实际上消息也发送了一个参数。

【讨论】:

  • 对不起,我打错了,但仍然有错误,请参阅下面的评论。
【解决方案2】:
  1. 如果您以编程方式创建按钮并将目标设置为 clickButton,请确保存在 clickButton 方法

  2. clickButton 方法(根据错误)应该接受一个参数。所以方法的定义将是

    • (IBAction)clickButton:(id)sender;
  3. 如果您已将 IBAction 映射到 IB 中的事件,则可以省略 :(id)sender 部分

  4. 要从基于导航的应用程序中的任何视图加载根视图控制器,请使用

    [[self navigationController:popToRootViewControllerAnimated:YES];

【讨论】:

  • 对不起,我在代码中有错字。如果我现在取出所有代码并拥有一个可以工作的 NSLog,我可以单击按钮直到我心满意足。我现在得到的错误是...... *** 由于未捕获的异常 'NSUnknownKeyException' 导致应用程序终止,原因:'[ setValue:forUndefinedKey:]:此类不符合关键活动指标的关键值编码。 '
  • 这意味着你有一个名为 activityIndi​​cator 的 IBOutlet 变量,但它没有映射到 nib 文件中的控件
  • 谢谢,但我在当前视图或 NIB 的代码中没有。在我试图加载它的 MapView 中,它有一个 IBOutlet,因为它在我开始在其他地方设置动画时起作用!???
  • 好吧奇怪,我断开了 IB 中的 activityIndi​​cator 并重新连接它并得到以下错误... *** 由于未捕获的异常 'NSUnknownKeyException' 导致应用程序终止,原因:'[ setValue:forUndefinedKey:]:这个类对于键 updatedLabel 不兼容键值编码。然而,对这个标签做同样的事情会导致上面的结果:-(
  • 您在哪个类中为 Activity Indicato 和 Label 创建了 IBOutlet?如果它是在您实现的 MapViewController 的子类中完成的,则需要确保 MapViewController 的子类名称在 IB 中,而不是超类的名称。设置为你的子类,虽然没有看到代码,也很难说。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多