Сначала вы должны изменить свой прокотол следующим образом:
@protocol CoreDataDelegate
//- (NSMutableArray *) fetchCoreData;
- (void) getMyLocationEntityArray:(NSMutableArray *)entityArray;
@end
Вы устанавливаете MapViewController
, чтобы он отвечал на ваш протокол CoreDateDelegate
.Итак, я полагаю, вы разместили свой ListTableViewController
внутри MapViewController
.Если это так, вам нужно сделать следующее:
// MapViewController.m
...
ListTableViewController *listVC = [[ListTableViewController alloc] init];
listVC.delegate = self;
// display your listVC
...
// Somewhere in your code of MapViewController.m
- (void) getMyLocationEntityArray:(NSMutableArray *)entityArray {
// do something with entityArray
}
РЕДАКТИРОВАТЬ
Следуя вашим комментариям, вот более простой способ сделать то, что вы хотите.NSNotification
.Он не требует протокола и его легче реализовать.
// In ListTableViewController.m
// In Init or viewDidLoad function
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(getEntity:)
name:@"GetEntity"
object:nil];
- (void)getEntity:(NSNotification *)notif {
NSArray *entityArray = (NSArray *)[notif object];
// do something with entityArray
}
// In dealloc or viewDidUnLoad function
[[NSNotificationCenter defaultCenter] removeObserver:self
name:@"GetEntity"
object:nil];
// In MapViewController.m
// theEntityArray to be defined
[[NSNotificationCenter defaultCenter] postNotificationName:@"GetEntity"
object:theEntityArray
userInfo:nil];
В двух словах, когда вы отправите уведомление GetEntity в MapViewController
, он будет вызывать функцию -(void)getEntity:
из ListTableViewController
.