【问题标题】:Passing url to Three20 TTURLMap将 url 传递给 Three20 TTURLMap
【发布时间】:2010-09-27 21:20:54
【问题描述】:

我正在尝试将 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 是 TTURLMap 网址映射。有没有办法逃避这个人的提要网址 (它是我需要用来提取信息的休息服务)?

非常感谢。

【问题讨论】:

    标签: url parameters map three20


    【解决方案1】:

    这是一个常见问题。我还没有找到一个优雅的解决方案;我能找到的最好方法是在进入的过程中手动转义 URL(例如通过 Base64 编码),然后在 initWithURL: 函数中手动取消转义它。 (实际上,为了清楚起见,您可能想要一个名为 initWithBase64EncodedURL: 或类似名称的函数。)

    【讨论】:

      【解决方案2】:

      我认为 TTURLMap 唯一遇到的字符是 / 字符,所以下面的方法对我有用。只需按照 Mike 在进出 init 函数时的建议调用它们

      + (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];
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-23
        • 1970-01-01
        • 2012-10-08
        • 2015-08-31
        相关资源
        最近更新 更多