Iphone &引用;嵌套的推送动画可能导致导航栏“损坏”;调用launcherView:didSelectItem时:
在three20 TTCategory示例中,我试图修改LaunchViewTestController以启动测试视图控制器。我创建了一个TestContrller类并注册为Iphone &引用;嵌套的推送动画可能导致导航栏“损坏”;调用launcherView:didSelectItem时:,iphone,three20,Iphone,Three20,在three20 TTCategory示例中,我试图修改LaunchViewTestController以启动测试视图控制器。我创建了一个TestContrller类并注册为 [map from: @"tt://test" parent: @"tt://launcherTest" toViewController: [TestController class] selector: nil tra
[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。这是我正在使用的TTLauncher的一个工作示例,它根据TTLauncherItem的动作URL推送控制器。在app委托中注册控制器很简单,所以我只包括启动器控制器的函数
///////////////////////////////////////////////////////////////////////////////////////////////////
- (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);
}
[map from: @"tt://test"
parent: @"tt://launcherTest"
toSharedViewController: [TestController class]
selector: nil
transition: 0];
我发现问题是我需要映射到sharedviewcontroller而不是viewcontroller
///////////////////////////////////////////////////////////////////////////////////////////////////
- (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);
}
[map from: @"tt://test"
parent: @"tt://launcherTest"
toSharedViewController: [TestController class]
selector: nil
transition: 0];
如果你把一个视图控制器推到一个带有动画的导航控制器上,你必须等到动画完成后再推另一个视图控制器。这实际上是调用与我在代码中所做的相同的函数。