2012-05-07 21 views
1

私はAppDelegate.mからTableViewデータをリロードしようとしましたが、成功しませんでした。ここで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からデータをリロードする方法を知っていますか?

+0

なぜあなたはappdelegateでその呼び出しを実行しようとしていますか? – iremk

+0

'home.myTableView'は有効なオブジェクトですか? –

+0

@ott - 有効です – CroiOS

答えて

6

あなたは、データを再ロードするクラスでのごviewDidLoad()方法で

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

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

を実装することができます。あなたがデータをリロードしたいとき

次に、あなたがこの

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

のような通知を送信します。

iOS開発の経験を経た後の注意: これは非常に簡単で快適な解決策ですが、100%信頼できるわけではありません。特定の状況では、通知が数秒遅れることがあります。 UITableViewControllerへの高速かつ信頼性の高い代理人接続を作成することを強くお勧めします。


+0

このコードは動作していますが、TableViewのデータは変更されません。あなたはなぜそれが可能なのか考えてみませんか? – CroiOS

+0

すべては大丈夫です、それは私のせいでした。私はIB myTableViewをアウトレットに接続していません。 :) – CroiOS

+0

ありがとう!うまくいく.. .. :) – Gati

関連する問題