Многопараметрическое отображение с помощью Three20 и TTURLMap

Я следую этому руководству и объявляю следующие сопоставления в своем делегате приложения:

[map from:@"x://profile/(initWithId:)/(name:)" toViewController:[ProfileViewController class]];
[map from:@"*" toViewController:[TTWebController class]];

В ProfileViewController.m я реализую селектор - (id)initWithId:(int)anIdentifier name:(NSString *)name для обработки такого сопоставления. Я предполагаю, что открытие таких URL-адресов, как x://profile/1/John Doe, вызовет [[ProfileViewController alloc] initWithId:1 name:@"John Doe"], однако, похоже, это не так. Класс TTWebController по умолчанию вызывается каждый раз, когда я открываю указанный URL-адрес.

Использование одного параметра, то есть что-то вроде x://profile/(initWithId:), делает правильную вещь, то есть вызывает [[ProfileViewController alloc] initWithId:1].

Я что-то пропустил здесь? Как использовать многопараметрическое отображение с Three20 и TTURLMap?


person Anh    schedule 05.07.2010    source источник
comment
Вам нужно использовать toViewController: для передачи данных, или вы также можете использовать toModalViewController:? Поскольку я использую toModalViewController: и передаю некоторые данные, и хотя метод initWithId:, который я использую, вызывается, он по какой-то причине фактически не открывает представление.   -  person joshholat    schedule 04.12.2010


Ответы (1)


проблема в том, что "x://profile/1/John Doe" неправильно отформатирован как URL-адрес. когда вы создаете URL-адрес, попробуйте что-то вроде:

NSString *URL = [NSString stringWithFormat:@"x://profile/%d/%@", 1,
                 [@".." stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]];

Наслаждайтесь!

/мтр

person Marshall Rose    schedule 06.07.2010