Передача URL-адреса в Three20 TTURLMap - PullRequest
       24

Передача URL-адреса в Three20 TTURLMap

1 голос
/ 28 сентября 2010

Я пытаюсь передать URL-адрес в качестве параметра в TTURLMap следующим образом:

[map from@"tt://person/(initWithURL:)" toViewController: [PersonViewController class]];

Затем у меня есть TTStyledTableItemCell со ссылками, которые отображаются так:

<a href="tt://person/http://persons.url.com/blah">Person name</a>

, но когда я нажимаю на эти ссылки, ссылка не вызывает initWithURL: метод в классе PersonViewConroller.Я проверил, что все правильно подключено, передав простую строку.Я считаю, что это не работает, потому что синтаксический анализатор думает, что URL является частью отображения URL TTURLMap.Есть ли способ избежать URL фида человека (это служба отдыха, которую мне нужно использовать для получения информации)?

большое спасибо заранее.

Ответы [ 2 ]

5 голосов
/ 29 сентября 2010

Это распространенная проблема.Я не нашел элегантного решения;лучшее, что я смог найти, - это вручную экранировать URL-адрес (например, путем кодирования Base64), а затем вручную удалить его из функции initWithURL:.(На самом деле, вы бы хотели иметь функцию с именем initWithBase64EncodedURL: или что-то в этом роде, для ясности.)

1 голос
/ 11 марта 2011

Я думаю, что единственный символ, на котором срабатывает TTURLMap, - это символ /, так что мне помогло следующее. Просто вызывайте их, как подсказывает Майк, при входе и выходе из функции инициализации

+ (NSString *)encodeTtUrl:(NSString *)str {
    NSMutableString *temp = [NSMutableString stringWithString:str];
    [temp replaceOccurrencesOfString:@"/" withString:@"__" options:NSLiteralSearch range:NSMakeRange(0, [temp length])];
    return [NSString stringWithString:temp];
}

+ (NSString *)decodeTtUrl:(NSString *)str {
    NSMutableString *temp = [NSMutableString stringWithString:str];
    [temp replaceOccurrencesOfString:@"__" withString:@"/" options:NSLiteralSearch range:NSMakeRange(0, [temp length])];
    return [NSString stringWithString:temp];
}
...