0

在 myAppDelegate.m 中:

MainViewController *mainViewController         = [ [MainViewController alloc] init];
UINavigationController *navController = [[UINavigationController alloc]
                                         initWithRootViewController:mainViewController];

[navController setNavigationBarHidden:YES];
[[self window] setRootViewController:navController];

在 MainViewController.m 中没有什么特别的,只有一个绑定到按钮的操作:

- (IBAction)go:(id)sender {
   if (!whereamiViewController)
   {
      whereamiViewController = [[WhereamiViewController alloc] init];
   }
   [[self navigationController] pushViewController:whereamiViewController animated:YES];

}

在 WhereamiViewController.m 中,只需一个按钮即可在 UINavigationViewController 中显示另一个屏幕:

-(IBAction)showList:(id)sender
{

PointsViewController *container = [[PointsViewController alloc] init];
[[self navigationController] pushViewController:container animated:YES];
}

和:

@interface PointsViewController : UITableViewController

@end

一切都很好。但是当我登陆最后一个屏幕 PointsViewController 并返回 WhereamiView 时,应用程序冻结了,Xcode 在 CoureFoundation CFHas 处显示了一个陷阱。

现在,我知道 Objective-C 不是 php,但这确实是一个简单的例子:我错过了什么?有没有办法调试问题?

调试器说:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-  [__NSCFType _forgetDependentConstraint:]: unrecognized selector sent to instance 

今天早上我在模拟器中运行了应用程序,没有崩溃!!这怎么可能?如果我在 iPhone 里面运行崩溃,在模拟器中没有崩溃。

4

3 回答 3

0

我并没有真正看到问题出在哪里,因为它发生在您发布的代码之外。我可能遗漏了一些东西,但是如果应用程序在您返回时崩溃,whereamiViewController您实际上是如何返回的?我在这里没有看到它的详细信息。

navigationControllers像这样,您将推送(添加)或弹出(删除)以viewControllers在导航控制器树上上下移动。由于此时该应用程序似乎正在崩溃,因此可能值得发布您如何做这个?你在哪里弹出容器(PointsViewController *)。

从您发布的代码中,我怀疑您可能正试图whereamiViewController通过再次重新推送它来返回。

于 2012-11-27T10:38:05.110 回答
0

蒂姆是对的。弹出 PointsViewController 也是我的做法。

你的 Xcode 在说什么?你能提供调试器的内容吗?这对找出问题所在更有帮助。

于 2012-11-27T10:58:17.280 回答
0

[部分解决] 这很奇怪:在调试所有内容并删除所有可疑声明后,没有任何改进。相同的崩溃 SIGABRT。重新启动 iPhone 和 Mac 后,一切都很好!

于 2012-11-28T10:45:42.160 回答