1

AppDelegate.m から TableView データをリロードしようとしましたが、成功しませんでした。

コードは次のとおりです(Whisは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 からデータをリロードする方法を知っている人はいますか?

4

1 に答える 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];

データをリロードしたいときはいつでも。

数年間の iOS 開発経験からの注意: これは非常に簡単で快適なソリューションですが、100% 信頼できるわけではありません。特定の状況下では、通知が数秒遅れることがあります。への高速で信頼性の高いデリゲート接続を作成することを強くお勧めしますUITableViewController


于 2012-05-07T15:10:59.860 に答える