Вопрос по xcode, objective-c – Как перезагрузить данные TableView из AppDelegate.m?

1

Я пытался перезагрузить данные TableView из AppDelegate.m, но безуспешно.

Вот код (который работает в HomeViewController):

AppDelegate.m

...
- (void)applicationWillEnterForeground:(UIApplication *)application
{
[self refreshTableData];
}

-(void)refreshTableData{

    UINavigationController *navController = [[self.tabBarController viewControllers] objectAtIndex:0];
    HomeViewController *home = [[navController viewControllers] objectAtIndex:0];

    NSEntityDescription *entity = [NSEntityDescription entityForName:@"MYTable" inManagedObjectContext:home.context];

    NSFetchRequest *request = [[NSFetchRequest alloc] init];

    [request setFetchBatchSize:20];

    [request setEntity:entity];

    NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"orderEnt" ascending:YES];

    NSArray *newArray = [NSArray arrayWithObject:sort];

    [request setSortDescriptors:newArray];

    NSError *error;

    NSMutableArray *results = [[home.context executeFetchRequest:request error:&error] mutableCopy];

    [home setArr:results];

    //NSLog(@"%@", home.arr);//here is showed correct data

    home.context = self.managedObjectContext;

    [home.myTableView reloadData];


}
...

Кто-нибудь знает, как перезагрузить данные из AppDelegate.m?

почему вы пытаетесь сделать этот вызов в appdelegate? iremk
home.myTableView является действительным объектом? ott--
@ott - это действительно iWizard

Ваш Ответ

1   ответ
6

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reloadTableViewData) name:@"ReloadAppDelegateTable" object:nil]; 

в вашемviewDidLoad() метод и

- (void)reloadTableViewData{
  [self.myTableView reloadData];
}

в классе, где вы хотите перезагрузить данные.

Затем вы отправляете уведомление, как это

[[NSNotificationCenter defaultCenter] postNotificationName:@"ReloadAppDelegateTable" object:nil];

всякий раз, когда вы хотите перезагрузить данные.

Note after some years of iOS development experience: Хотя это очень простое и удобное решение, оно не на 100% надежно. Уведомления могут быть отложены на несколько секунд при определенных обстоятельствах. Я настоятельно рекомендую создать быстрое и надежное подключение делегатов к вашемуUITableViewController.

Error: User Rate Limit Exceeded iWizard
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded iWizard

Похожие вопросы