我正在使用Appcelerator Titanium Mobile编写iPhone应用程序。我隐藏并根据焦点窗口显示选项卡组。
dashWin.addEventListener("focus",function(e) {
if (dashWin.tabGroupVisible == true) {
dashWin.tabGroupVisible=false;
tabGroup.animate({bottom:-50,duration:500});
}
});
当dashWin收到焦点事件时,上面的代码会隐藏选项卡组。但是,当在iPhone模拟器中运行时事件触发时,我在Titanium控制台中看到此消息:
在意外状态下完成导航转换。导航栏子视图树可能已损坏。
Google搜索结果显示了一个结果:Another StackOverflow question可能会暗示发生了什么。
答案 0 :(得分:3)
我通过故事板将Action Segue
或Selection Segue
从一个视图链接到另一个视图并再次以编程方式执行相同的segue时出现此错误,这使导航控制器执行两次相同的segue。
此案例的2个解决方案:
Action Segue
替换Selection Segue
或Manual Section
并自行执行- (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender
。当您想根据发件人自定义segue的行为时,您可能会发现此解决方案很有用。答案 1 :(得分:2)
通常,标签组充当应用导航的根。当用户点击选项卡时,该选项卡的窗口将被聚焦。
接下来,当用户触发需要出现新窗口的操作时,它通常以模态或顶部(在导航堆栈的意义上)显示在当前窗口中。在后一种情况下,告诉当前选项卡打开新窗口。
如果将tabBarHidden属性设置为false(创建新窗口时),当前选项卡打开新窗口时,将隐藏标签栏。
这种更标准的方法对您有用吗?
答案 2 :(得分:0)
我有segues
导致我的主导航控制器导致这种情况。我通过将主导航控制器设置回堆栈顶部来解决问题。这是代码:
- (void) viewDidAppear:(BOOL)animated
{
[self.navigationController popToRootViewControllerAnimated:NO];
}
答案 3 :(得分:0)
最近,我遇到了同样的问题。原因是: - 我试图错误地弹出两次视图控制器。 您可以通过在推送和弹出视图控制器上设置断点来检查此崩溃