Three20 URL Based Navigation Guide
[map from:[Address class] name:@"result" toURL:@"tt://listingPage/(initWithResult:)"];
Ваша проблема в том, что ваш код пытается вызвать метод (initWithResult:)
в экземпляре [Address class]
.
Вместо этого вам нужно извлечь параметр Result
из экземпляра Address
и использовать его для формирования вашего URL.
Пример:
@interface ListingPageController : UIViewController
- (id)initWithResult:(NSNumber *)resultId;
@end
@interface Address : NSObject
@property (nonatomic, copy) NSNumber *resultId;
@end
в этом случае вы хотите передать resultId
из Address
на ваш initWithResult:
вызов ListPageController
.
[map from:[Address class] name:@"result" toURL:@"tt://listingPage/(resultId)"];
[map from:@"tt://listingPage/(initWithResult:)" toViewController:[ListingPageController class]];
Обратите внимание, что нет двоеточия в (resultId)
- поскольку это вызов метода получения свойства.
В следующем примере:
Address *result = [[[Address alloc] init] autorelease];
result.resultId = [NSNumber numberWithInt:12345];
NSString* url = [result URLValueWithName:@"result"];
[[TTNavigator navigator] openURLAction:[TTURLAction actionWithURLPath:url]];
Сначала будет преобразовано result
в URL tt://listingPage/12345
, а затем откроется этот URL, который будетпо очереди звоните ListingPageController initWithResult:12345
.