从TTTableview到TTPhotoView的Three20导航

时间:2011-10-30 02:05:05

标签: iphone ios three20

我对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可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

对于您的预期用途,您甚至不需要使用- from:parent:toSharedViewController:,只需尝试- from:toViewController:即可。这样做的原因是你前往PhotoViewController的方式很直接(启动器 - &gt;图库 - &gt;照片)。

对于您希望直接从PhotoViewController导航到LauncherViewController同时在GalleryViewController之间导航的情况(即在您的{左上角有一个后退按钮) {1}}指向PhotoViewController),您要拨打GalleryViewController

目前,您正在调用- from:parent:toSharedViewController:,它将重用共享控制器,因此不会生成“嵌套推送” - 警告:

  

使用“共享”模式创建的控制器,意味着它将是   创建一次并重新使用,直到它被销毁。