отвечать на гиперссылки в Three20 TTStyledTextLabel iphone - PullRequest
0 голосов
/ 26 января 2011

Я использую исходный код Three20 для отображения гиперссылок из текста, полученного из твиттера, поэтому мне удалось сопоставить URL-адреса "*" с классом TTWebViewController, используя.

[map from:@"*" toViewController:[TTWebController class]];

Но ятакже хочу иметь возможность вернуться к предыдущему представлению (где показывается твиттер), это делается в примере проекта TTTwitter, но я не понимаю, как это делается, мне все это кажется очень неясным, и у меня нет 'ничего не могу найти в документации.

Я не совсем понимаю, почему они сопоставляют каждый класс с URL-адресом, и как навигатор знает, как инициировать и управлять различными классами, например, в моем случае у меня никогда не былоконтроль над TTWebController, потому что у меня может быть класс-обертка, который создает webController и помещает его в UINavigationController, но я не знаю URL-адрес твиттера, который мне нужно загрузить;

Любые указатели также приветствуютсяесли кто-то знает хороший учебник Three20, было бы здорово.

1 Ответ

2 голосов
/ 26 мая 2011

При использовании TTNavigator мы должны создать все наши контроллеры представления, используя TTNavigator. И для этого мы должны отобразить все наши контроллеры представления на схемы URL.

Когда TTNavigator вызывается впервые в приложении (в вашемчерез TTStyledLabel) он создает базовый навигационный контроллер. Вы не видите кнопку возврата, поскольку находитесь в совершенно новом навигационном контроллере.

Поэтому вы должны сопоставить свой контроллер представления канала Twitter с URL-адресом и попросить TTNavigator:откройте этот URL в делегате вашего приложения.

Нечто подобное в делегате приложения должно работать для вас.

 TTNavigator* navigator = [TTNavigator navigator];
 navigator.persistenceMode = TTNavigatorPersistenceModeNone;

 [self.window makeKeyAndVisible];

 TTURLMap* map = navigator.URLMap;
 [map from:@"*" toViewController:[TTWebController class]];   
 [map from:@"app://feed" toViewController:[TwitterFeedViewController class]];

 if (![[TTNavigator navigator] restoreViewControllers]) {
     TTURLAction* urlAction = [TTURLAction actionWithURLPath:@"app://feed"];
     [TTNavigator navigator] openURLAction:urlAction];
 }
...