【发布时间】:2014-10-27 05:00:20
【问题描述】:
我是 xcode ios 编程的新手,我有 2 个表视图控制器,我想将对象从子控制器传递给父控制器。如果从父级传递给子级很容易,但是在选择子视图中的一行后,我找不到将对象从子级传回父级控制器的简单方法。
注意:*searchFieldController是父控制器
父头文件
@interface ProductSearchFieldTableViewController : UITableViewController <UITableViewDataSource, UITableViewDelegate>
@property(strong, nonatomic) NSString *selectedMake;
@end
父实现文件
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
// Configure the cell...
NSDictionary *field= [self.fields objectAtIndex:indexPath.row];
NSString *name=[field objectForKey:@"name"];
if([name isEqualToString: @"make"]){
[self performSegueWithIdentifier:@"valueSeque" sender:self];
}
}
子工具文件
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
ProductSearchFieldTableViewController *searchFieldController = [ProductSearchFieldTableViewController alloc];
searchFieldController.selectedMake =[[fields objectAtIndex:indexPath.row] objectForKey:@"value"];
[self.navigationController popViewControllerAnimated:YES];
}
【问题讨论】:
-
在子控制器中创建父控制器的属性并通过其引用使用。
-
这是一种通常使用委托协议的情况。
-
您正在创建 ProductSearchFieldTableViewController 的新实例,而不是访问您的父级。此外,您不应该查看 parentViewController 因为这不是您的情况。您应该按照@rdelmar 的建议实现一个委托
-
谢谢我使用委托方法:)