我有一个父视图(表),它将详细信息对象传递给子视图(表)。
父视图有一个网络请求,用于获取数据并将数据传递给子视图。
我希望能够在子视图中更新数据。我想我需要在查看子视图时调用父视图的网络请求方法,并更新子表。这可能吗?
在家长VC中:
- (void)fetchAppointmentsForVisibleDate {
self.appointmentArray = [DataSource getTodayData:self.visibleDate];
NSMutableArray *array = [NSMutableArray arrayWithCapacity:50];
for (NSDictionary *appointment in self.appointmentArray)
{
[array addObject: [NSString stringWithFormat:@"%@: %@", [appointment objectForKey:@"scheduled_time"], [appointment objectForKey:@"patient"]]];
}
self.listData = array;
[self.appointmentTableView reloadData];
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
ChildVC *vc = [Child VC alloc]initWithNib@"ChildVC"];
vc.appointmentDictionary = [self.appointmentArray objectAtIndex:path.row];
}
答案 0 :(得分:1)
您的网络请求是否必须由父视图调用。
如果它只是一种方法,您可以将您孩子的代表设置为父代。 即在父视图中你可以做到
创建子对象,然后执行
child.delegate=self;
并从子级
调用您的网络方法即[delegate networkMethod];
答案 1 :(得分:0)
好的,我们假设您的代码可以执行以下操作。
在您的子类的.h文件中添加
{
id delegate;
}
@property(nonatomic,retain) id delegate;
在你孩子的.m文件中做了所有需要的事情,比如合成等等。
现在在你的父类中做
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
ChildVC *vc = [Child VC alloc]initWithNib@"ChildVC"];
vc.delegate=self; //here you set the delegate of your child.
vc.appointmentDictionary = [self.appointmentArray objectAtIndex:path.row];
}
现在在你的孩子.m类中,如果你想调用驻留在父视图类中的任何函数,那么就这样做。
[delegate myNetworkFunction] //it will give warning but dont worry
如果你想要
,你也可以传递参数 [delegate myNetworkFunction:myArgument];