【发布时间】:2015-06-02 18:20:56
【问题描述】:
我有两个按钮触发 segues 到两个不同的 UIViewCONtrollers,使用以下代码:
- (IBAction)newTransButton:(UIButton *)sender
{
[self performSegueWithIdentifier:@"newTransSegue" sender:self];
}
- (IBAction)switchAccountButton:(UIButton *)sender
{
[self performSegueWithIdentifier:@"selectAccountSegue" sender:self];
}
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NSManagedObjectContext *localContext = [NSManagedObjectContext MR_contextForCurrentThread];
if ([[segue identifier] isEqualToString:@"newTransSegue"])
{
UINavigationController *navController = (UINavigationController *)segue.destinationViewController;
AddTransactionVC *atvc = (AddTransactionVC *)navController.topViewController;
atvc.delegate = self;
WMMGTransaction *addedTransaction = (WMMGTransaction *)[WMMGTransaction MR_createInContext:localContext];
addedTransaction.account = self.currentAccount.name;
atvc.thisTransaction = addedTransaction;
}
else if ([[segue identifier] isEqualToString:@"selectAccountSegue"])
{
UINavigationController *navController = (UINavigationController *)segue.destinationViewController;
AccountSelectVC *acctSelVC = (AccountSelectVC *)navController.topViewController;
acctSelVC.delegate = self;
}
}
任一按钮的激活都会转到相应的视图控制器,但会导致此警告:
Warning: Attempt to present <UINavigationController: 0x7fb99b4dd430> on <FirstViewController: 0x7fb99b565dd0> whose view is not in the window hierarchy!
每个视图控制器上都有一个保存和取消导航栏按钮。除了上面提到的之外,一切都按预期工作,除了 newTransSegue 的 View 控制器上的 Cancel 按钮,它关闭了 VC,但应用程序因以下错误而崩溃:
EXC_BAD_ACCESS (code = 1, address = 0x7f87394af29)
这是我用来关闭该 VC 的委托方法:
-(void)addTransactionViewControllerDidCancel
{
[self.navigationController dismissViewControllerAnimated:YES completion:nil];
}
我已经为此工作了几天,并尝试删除转场并在情节提要中重新创建它们,以及对导航控制器执行相同的操作。我在某个地方偏离了轨道,但看不到确切的位置。
我当然可以使用一些指导。 :)
【问题讨论】:
-
在抛出异常时你有 xcode 要中断吗?另外,你有堆栈跟踪吗?我很确定警告与错误没有直接关系,但您也应该清除它。
-
我知道我应该知道如何,但我并没有真正使用堆栈跟踪,也没有使用异常断点。但是,我只是为所有异常设置了一个,此时我无法分辨出行为的任何区别。它像以前一样崩溃回到 main.m。我今晚必须离开一段时间,但今晚晚些时候会阅读异常断点并回复您。谢谢!
-
它应该真正为您提供导致麻烦的线路...学习正确调试将为您节省大量时间和将来的挫折。检查并报告,raywenderlich.com/10209/my-app-crashed-now-what-part-1
-
感谢您的链接,Jay,总体而言非常有帮助。我阅读了网站并进行了练习。但是,当我将相同的方法应用于我的应用程序时,我无法比 main.m 中的上述行更深入地跟踪问题,至少目前是这样。我正在继续调查这个问题,并会在找到解决方案时报告。
-
@Jay--请在下面查看我的解决方案,再次感谢!
标签: ios uiviewcontroller uinavigationcontroller uistoryboardsegue