2011-07-15 84 views
0

我正在關注教程here在URL中傳遞本地對象

我的代碼是:

- (void) didSelectObject:(id) object atIndexPath:(NSIndexPath*) indexPath  
{ 
    Group * group = (Group *)((RKMappableObjectTableItem *) object).object; 
    [self.tableView deselectRowAtIndexPath:indexPath animated:YES]; 

    group.unread = 0; 
    [self.tableView reloadData]; 

    TTURLAction *action = [[[TTURLAction actionWithURLPath:@"tt://group"] 
          applyQuery:[NSDictionary dictionaryWithObject:group forKey:@"kParameterUser"]] 
          applyAnimated:YES]; 
    [[TTNavigator navigator] openURLAction:action]; 

} 

我已經設置映射爲:

[map from:@"tt://group" toSharedViewController:[TopicsViewController class]]; 

和我TopicsViewController內我都試過:

- (id) initWithNavigatorURL:(NSURL*)URL query:(NSDictionary*)query { 

但它沒沒有工作。就好像它找不到任何映射。爲什麼是這樣?我究竟做錯了什麼?

UPDATE:

這裏的基礎上,建議更新的代碼:

TTURLAction *action = [[[TTURLAction actionWithURLPath:@"tt://group"] 
           applyQuery:[NSDictionary dictionaryWithObject:group forKey:@"kParameterUser"]] 
           applyAnimated:YES]; 
     [[TTNavigator navigator] openURLAction:action]; 

[map from:@"tt://group?" toSharedViewController:[TopicsViewController class] selector:@selector(initWithNavigationURL:)]; 

- (id) initWithNavigatorURL:(NSURL*)URL query:(NSDictionary*)query 

我究竟錯在這裏做什麼?

回答

1

你不是在告訴它什麼選擇器來校準!首先,在映射的末尾添加一個?:@「tt:// group?」

當您添加任何查詢詞典時,它們會像url中的正常參數一樣發送(?foo=bar&apple=orange)。

接下來,如果您不打算將選擇器用作URL映射的一部分,請使用from:toSharedViewController:selector:方法將選擇器設置爲您希望調用的選擇器。

+0

我其實只是想要它調用initWithNavigatorURL:(NSURL *)URL查詢:(NSDictionary *)查詢,而不是另一個選擇器...看到一些其他的例子,似乎沒有人使用它? ..你能否詳細說明。即使在上面的問題中我鏈接的three20文檔..它沒有使用? – adit

+0

爲什麼你在init方法中關心navigatorURL?你爲什麼需要它?無論哪種方式,將您的選擇器設置爲@selector(initWithNavigatorURL :)。 – coneybeare

+0

我實際上並不關心navigatorURL,我只關心被傳入的對象..無論如何,我嘗試了你的建議,但它仍然不起作用... – adit

0

我不太瞭解three20,不過我想你首先需要創建一個你想傳遞的對象的URL,它可以被映射。

它看起來像three20提供NSObject的一個類別,它允許您撥打:
NSString* url = [myFooObject URLValueWithName:@"barName"];

此方法應該從NSObject的幾乎任何一個框架類繼承。

NSObjects到URL從您發佈的教程章節URL映射方法

+0

據我所知......當我們傳遞一個對象作爲參數時,你不會設置該對象的URL ..如果你設置了對象的URL,那麼URL在我的情況下會是什麼樣子? – adit