Многопараметрическое сопоставление с 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?
1 ответ
Проблема в том, что "x://profile/1/John Doe" неправильно отформатирован как URL. когда вы создаете URL, попробуйте что-то вроде:
NSString *URL = [NSString stringWithFormat:@"x://profile/%d/%@", 1,
[@".." stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]];
наслаждаться!
/ ССО