передать нативный объект в URL - PullRequest
0 голосов
/ 15 июля 2011

Я следовал учебнику здесь .

У меня есть код:

- (void) didSelectObject:(id) object atIndexPath:(NSIndexPath*) indexPath    
{
    Group * group = (Group *)((RKMappableObjectTableItem *) object).object;
    [self.tableView deselectRowAtIndexPath:indexPath animated:YES];

    group.unread = 0;
    [self.tableView reloadData];

    TTURLAction *action =  [[[TTURLAction actionWithURLPath:@"tt://group"] 
                             applyQuery:[NSDictionary dictionaryWithObject:group forKey:@"kParameterUser"]]
                            applyAnimated:YES];
    [[TTNavigator navigator] openURLAction:action];

}

Я установил отображение как:

[map from:@"tt://group" toSharedViewController:[TopicsViewController class]];

и внутри моего TopicsViewController я пробовал оба:

- (id) initWithNavigatorURL:(NSURL*)URL query:(NSDictionary*)query {

, но это не сработало.Как будто он не может найти никакого отображения.Почему это?Что я делаю не так?

ОБНОВЛЕНИЕ:

Вот обновленный код, основанный на предложении:

 TTURLAction *action =  [[[TTURLAction actionWithURLPath:@"tt://group"] 
                                 applyQuery:[NSDictionary dictionaryWithObject:group forKey:@"kParameterUser"]]
                                applyAnimated:YES];
        [[TTNavigator navigator] openURLAction:action];

[map from:@"tt://group?" toSharedViewController:[TopicsViewController class] selector:@selector(initWithNavigationURL:)];

- (id) initWithNavigatorURL:(NSURL*)URL query:(NSDictionary*)query 

что я здесь не так делаю

Ответы [ 2 ]

1 голос
/ 15 июля 2011

Вы не говорите, какой селектор для звонка!Сначала добавьте ? в конец вашего отображения: @ "tt: // group?"

Когда вы добавляете какие-либо словари запросов, они отправляются как обычные параметры в URL (?foo=bar&apple=orange).

Далее, если вы не собираетесь использовать селектор как часть сопоставления URL, используйте метод from:toSharedViewController:selector:, чтобы установить селектор на тот селектор, которому вы хотите позвонить.

0 голосов
/ 15 июля 2011

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

Похоже, что Three20 предоставляет категорию по nsobject, которая позволяет вам звонить:
NSString* url = [myFooObject URLValueWithName:@"barName"];

Этот метод должен быть унаследован от NSObject практически любым классом Framework.

См. NSObjects to URLs в главе Методы преобразования URL из учебника, который вы опубликовали.

...