【问题标题】:"nested push animation can result in corrupted navigation bar" when call launcherView: didSelectItem:调用launcherView时“嵌套推送动画可能导致导航栏损坏”:didSelectItem:
【发布时间】:2011-09-19 04:19:39
【问题描述】:

在 three20 TTCategory 示例中,我尝试修改 LauncherViewTestController 以启动测试视图控制器。我创建了一个 TestContrller 类并注册为

[map            from: @"tt://test"
              parent: @"tt://launcherTest"
    toViewController: [TestController class]
            selector: nil
          transition: 0];

然后在launchView:didSelectItem:中,我尝试导航到这个测试视图控制器

 - (void)launcherView:(TTLauncherView*)launcher didSelectItem:(TTLauncherItem*)item {
        TTNavigator *navigator = [TTNavigator navigator];
        [navigator openURLAction:[ [TTURLAction actionWithURLPath:@"tt://test"] applyAnimated:NO]];
 }

但是,我不断收到“错误嵌套推送动画可能导致导航栏损坏”,并且导航栏无法与彼此的标题堆栈正常工作。我对 iphone 开发很陌生,有人可以在这里给我一些帮助吗?

编辑,我在下面发布了我的答案,我需要映射到 SharedViewController 而不是 ViewController。

【问题讨论】:

  • 如果将视图控制器推送到带有动画的导航控制器上,则必须等到该动画完成后才能推送另一个视图控制器。

标签: iphone three20


【解决方案1】:

这是我正在使用的 TTLauncher 的一个工作示例,它基于 TTLauncherItem 的操作 URL 推送控制器。在应用程序委托中注册控制器是微不足道的,所以我只包括启动器控制器的功能。

///////////////////////////////////////////////////////////////////////////////////////////////////
- (void)loadView {
  [super loadView];

  _launcherView = [[TTLauncherView alloc] initWithFrame:self.view.bounds];
  _launcherView.backgroundColor = [UIColor whiteColor];
  _launcherView.delegate = self;
  _launcherView.columnCount = 3;

  _launcherView.pages = [NSArray arrayWithObjects:
                         [NSArray arrayWithObjects:
                          [[[TTLauncherItem alloc] initWithTitle:@"Breaking News"
                                                           image:@"bundle://Icon.png"
                                                             URL:@"portal://news/breakingnews" 
                                                       canDelete:NO] autorelease],
                          nil],

                         nil
                         ];
  [self.view addSubview:_launcherView];
}



///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
#pragma mark -
#pragma mark TTLauncherViewDelegate


///////////////////////////////////////////////////////////////////////////////////////////////////
- (void)launcherView:(TTLauncherView*)launcher didSelectItem:(TTLauncherItem*)item {
  TTOpenURL(item.URL);
}

【讨论】:

  • 如果你进入代码,这基本上和我调用的函数相同。
【解决方案2】:

我发现问题是我需要映射到共享视图控制器而不是视图控制器。

[map            from: @"tt://test"
              parent: @"tt://launcherTest"
    toSharedViewController: [TestController class]
            selector: nil
          transition: 0];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-28
    • 1970-01-01
    • 1970-01-01
    • 2013-11-22
    相关资源
    最近更新 更多