基本上下面的代码是在单击一行时加载一个新的xib,if语句用于检查是否单击了一个特定的行.
if (#something) { UIViewController *controller = [[NSClassFromString(@"abcd") alloc] initWithNibName:@"abcd" bundle:nil]; [self.navigationController pushViewController:controller animated:YES]; } else { methodsViewController.r = [sel objectForKey:@"cvb"]; methodsViewController.m = [sel objectForKey:@"bnm"]; #adding controller [self.navigationController pushViewController:controller animated:NO]; }
问题是,当我点击一行时,它会转到新页面但是当我单击导航栏中的后退按钮时,前一页面不会加载,而是显示黑页.它在日志中显示的错误是:
嵌套推送动画可能导致导航栏损坏,在意外状态下完成导航过渡.导航栏子视图树可能已损坏.
我搜索了所有相似的答案,但无法得到解决方案.帮助将不胜感激.
提前致谢
解决方法
编辑:更多细节:
我假设您使用了故事板(设计窗口中有多个视图控制器).如果你不使用它,我走错了路.例如,从我的一个项目获取此屏幕截图:
如果您已将控件从“行”拖动到右侧的视图控制器,则会创建一个segue.当您在左视图控制器的tableview中选择一行时,可能会触发此segue.如果您使用的是标准项目,那么这样的segue可能已经存在,并且您没有自己创建它.
选择行时,segue会“自动”触发.在代码中手动推送视图控制器时,可能会导致“第二次推送”,从而干扰导航控制器.
您可以通过单击场景之间的粗线或该圆形图标来删除segue,然后按删除.
如果您需要一个在选择行时不会自动触发的segue,您可以控制 – 将其从该黄色图标拖动到目标场景.应出现一个菜单,您可以选择“手动”下的其中一个选项.然后必须手动触发segue,您将在代码中执行以下操作:
[self performSegueWithIdentifier:@"SegueId" sender:self];
单击故事板中的圆形segue图标时,可以在属性检查器的“标识符”字段中的实用程序窗口中设置标识符.该标识符是上面代码行中使用的字符串.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。