次のように TTTableViewController へのルーティングを設定しています。
[map from:@"myurl://filter/(initWithName:)"
toViewController:[FilterViewController class]];
次に、別のView Controllerで、変更可能な辞書を設定して、クエリとして渡します。
// Set up dictionary and populate a field
NSMutableDictionary *filterDictionary;
filterDictionary = [[NSMutableDictionary alloc] init];
[filterDictionary setObject:@"test entry" forKey:@"test key"];
// Attach a query to the URL and open it
TTURLAction *theAction = [[TTURLAction actionWithURLPath:@"myurl://filter/search"]
applyQuery:filterDictionary];
[[TTNavigator navigator] openURLAction:theAction];
最後に、フィルター ビュー コントローラーで、値に正しくアクセスできます。
.h:
@property (nonatomic, retain) NSMutableDictionary *filterDictionary;
.m:
- (id)initWithName:(NSString *)filterName query:(NSMutableDictionary *)filters {
if (self = [self init]) {
self.filterDictionary = filters;
NSLog(@"Filter Dictionary assigned : %@", self.filterDictionary);
}
return self;
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
if (filterDictionary)
[filterDictionary setObject:textField.text forKey:@"searchAddress"];
[textField resignFirstResponder];
return YES;
}
辞書は正しく変更可能で、問題なく値などを追加できます。ただし、私の filterViewController が閉じられると、変更された辞書が親に反映されると想定しました-参照によって正しく渡されました。
何か不足していますか?filterVC 内の私の辞書は、Three20 の基本クラスが原因で、実際にはコピーですか?