我正在设置到 TTTableViewController 的路由,如下所示:
[map from:@"myurl://filter/(initWithName:)"
toViewController:[FilterViewController class]];
然后,在另一个视图控制器中,我设置了一个可变字典作为我的查询传递:
// 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 被解除时,我假设更改后的字典将反映在父级中 - 它是通过引用正确传递的。
我错过了什么吗?由于某处的基类 Three20,我在 filterVC 中的字典实际上是副本吗?