我对Three20中的视图控制器导航有疑问。我有一个TTTableView“图库”和TTPhotoViewController“照片”。当我触摸一个表格视图项目时,该应用程序将导航到照片视图。
以下是我使用的代码:
在AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
方法中,
TTNavigator *navigator = [TTNavigator navigator];
navigator.supportsShakeToReload = NO;
navigator.persistenceMode = TTNavigatorPersistenceModeAll;
TTURLMap *map = navigator.URLMap;
[map from:@"*" toViewController:[TTWebController class]];
[map from:@"tt://launcher" toSharedViewController:[LauncherViewController class]];
[map from:@"tt://photos" parent:@"tt://gallery" toViewController:[PhotoViewController class] selector:nil transition:0];
[map from:@"tt://gallery" parent:@"tt://launcher" toViewController:[GalleryViewController class] selector:nil transition:0];
GalleryViewController是一个tableview控制器
@interface GalleryViewController : TTTableViewController
@end
在GalleryViewController.m
-(void)createModel
{
self.dataSource = [TTListDataSource dataSourceWithObjects:
[TTTableSubtitleItem itemWithText:@"Album One" subtitle:nil imageURL:@"http://example.image.url" URL:@"tt://photos"]
,
[TTTableSubtitleItem itemWithText:@"Album Two" subtitle:nil imageURL:@"http://example.image.url2" URL:@"tt://photos"],
nil];
}
我从TTCatalog.xcodeproj
示例项目中复制了此代码。但是当我尝试从表格视图项目导航到照片视图时,我无法深入到照片视图并从控制台获得以下内容。
nested push animation can result in corrupted navigation bar
Finishing up a navigation transition in an Navigation Bar subview tree might get corrupted.
Unbalanced calls to begin/end appearance transitions for <PhotoViewController: 0x6c5d8f0>.
所以我不知道如何解决这个问题。谢谢!
--------更新:----------
我想出了如何解决问题。在AppDelegate
方法中,使用
[map from:@"tt://launcher" toSharedViewController:[LauncherViewController class]];
[map from:@"tt://photos" parent:@"tt://gallery" toSharedViewController:[PhotoViewController class] selector:nil];
[map from:@"tt://gallery" parent:@"tt://launcher" toSharedViewController:[GalleryViewController class] selector:nil];
而不是[map from: parent: toViewController: selector: transition:]
但是这里有另一个问题,有人可以解释为什么toSharedViewController
可以解决这个问题吗?
答案 0 :(得分:0)
对于您的预期用途,您甚至不需要使用- from:parent:toSharedViewController:
,只需尝试- from:toViewController:
即可。这样做的原因是你前往PhotoViewController
的方式很直接(启动器 - &gt;图库 - &gt;照片)。
对于您希望直接从PhotoViewController
导航到LauncherViewController
同时在GalleryViewController
之间导航的情况(即在您的{左上角有一个后退按钮) {1}}指向PhotoViewController
),您要拨打GalleryViewController
。
目前,您正在调用- from:parent:toSharedViewController:
,它将重用共享控制器,因此不会生成“嵌套推送” - 警告:
使用“共享”模式创建的控制器,意味着它将是 创建一次并重新使用,直到它被销毁。