Три20 навигации от TTTableview к TTPhotoView - PullRequest
0 голосов
/ 30 октября 2011

У меня есть вопрос, касающийся навигации по контроллеру представления в 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 - это контроллер табличного представления

@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 голосов
/ 30 октября 2011

Для использования по назначению вам даже не нужно использовать - from:parent:toSharedViewController:, просто попробуйте - from:toViewController:.Причина этого в том, что ваш путь к PhotoViewController прямой (Launcher -> Галерея -> Фото).

Для случая, когда вы хотите перейти к PhotoViewController непосредственно из LauncherViewController, в то время как GalleryViewController между ними (т. Е. Имеется кнопка «Назад» в левом верхнем углу вашего PhotoViewController указателя)на GalleryViewController), вы хотите позвонить - from:parent:toSharedViewController:.

В настоящее время вы звоните - from:parent:toSharedViewController:, который будет повторно использовать общий контроллер, таким образом, не генерируя «вложенные push-предупреждения»:

Контроллеры, созданные в режиме «общий доступ», это означает, что он будет создан один раз и будет использоваться повторно, пока не будет уничтожен.

...