Как вызвать метод из родительского представления - PullRequest
0 голосов
/ 17 ноября 2011

У меня есть родительское представление (таблица), которое передает объект сведений в дочернее представление (таблица).

Родительское представление имеет сетевой запрос, который получает данные и передает данные в дочернее представление.

Я хочу иметь возможность обновлять данные, когда я нахожусь в дочернем представлении. Я думаю, что мне нужно вызвать метод сетевого запроса родительского представления при просмотре дочернего представления и обновить дочернюю таблицу. Это возможно?

В родительском 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];
}

Ответы [ 2 ]

1 голос
/ 17 ноября 2011

Является ли ваш сетевой запрос обязательным для вызова родительским представлением.

Если это просто метод, вы можете назначить делегата вашего ребенка родителю.то есть в родительском представлении вы можете

создать дочерний объект и просто

child.delegate=self;

и вызвать свой сетевой метод от дочернего

т.е. [делегировать networkMethod];

0 голосов
/ 17 ноября 2011

Хорошо, давайте предположим, что ваш код работает следующим образом.

в файле .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];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...