6

我正在使用 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 控制台中看到此消息:

在意外状态下完成导航转换。导航栏子视图树可能会损坏。

谷歌搜索出现了一个结果:另一个 StackOverflow 问题,它可能暗示了正在发生的事情。

4

4 回答 4

3

当我通过情节提要将一个视图链接Action SegueSelection Segue从一个视图链接到另一个视图并再次以编程方式执行相同的 segue 时,出现此错误,这使得导航控制器执行相同的 segue 两次。

这种情况的2个解决方案:

  1. 删除推送视图的代码。只需让故事板为您执行转场即可。这适用于大多数情况。
  2. 更换Action SegueSelection Segue用自己Manual Section- (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender。当您想根据发件人自定义 segue 的行为时,您可能会发现此解决方案很有用。
于 2014-01-27T09:05:09.237 回答
2

通常,选项卡组充当应用导航的根。当用户点击一个选项卡时,该选项卡的窗口将获得焦点。

接下来,当用户触发需要出现新窗口的操作时,它通常以模态方式出现或出现在当前窗口的顶部(在导航堆栈意义上)。在后一种情况下,告诉当前选项卡打开新窗口。

如果将 tabBarHidden 属性设置为 false(当您创建新窗口时),当新窗口被当前选项卡打开时,选项卡栏将为您隐藏。

这种更标准的方法对您有用吗?

于 2011-04-02T01:48:03.150 回答
0

我有segues这导致我的主导航控制器导致这种情况。我通过将主导航控制器设置回堆栈顶部来解决问题。这是代码:

- (void) viewDidAppear:(BOOL)animated
{
    [self.navigationController popToRootViewControllerAnimated:NO];
}
于 2013-06-10T15:32:44.890 回答
0

最近,我遇到了同样的问题。原因是:-我试图错误地弹出视图控制器两次。您可以通过在推送和弹出视图控制器上设置断点来检查此崩溃

于 2014-07-31T08:58:22.063 回答