获取过渡视图控制器和应用程序崩溃的警告

时间:2014-07-04 08:25:45

标签: objective-c ios7 uinavigationcontroller terminate

当我尝试从ListViewController打开详细信息视图(使用didSelectRowAtIndex)获取警告时 在意外状态下完成导航转换。导航栏子视图树可能已损坏。并且在应用程序崩溃后出现错误 - 由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'无法将自己添加为子视图' 任何帮助将不胜感谢..

MY App Hierarchy

  • 的UIWindow

    • 的UITabBarController

      • 的UINavigationController

        • UIViewController

任何人都可以告诉我为什么我要加油?(抱歉我的英文)

更新

这是我的DetailController代码

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
XXXInfo *dInfo=[_SDArray objectAtIndex:indexPath.row];
DetailViewController *detail1=[DetailViewController viewControllerWithInfo:dInfo];
[self.navigationController pushViewController:detail1 animated:YES];
}

//导航到细节的静态方法

 +(DetailViewController *)viewControllerWithInfo:(XXXInfo *)info
 {
   DetailViewController *detail=[[DetailViewController  alloc]initWithNibName:@"DetailViewController" bundle:nil];
   detail.detailInfo=info;
   NSLog(@"info%@ ",info);
   return detail;
}

Please Look at My App Hierarchy

1 个答案:

答案 0 :(得分:1)

要取消选择所选行的动画需要很短的时间来制作动画然后才会导致冲突,有两种方法可以解决这个问题:

  1. 设置动画:否 [tableView deselectRowAtIndexPath:indexPath animated:NO]

  2. 移动代码行以将详细信息视图推送到一个小方法,然后在大约1-> 1.5秒后使用performSelector执行该方法。