iWi*_*ard 1 xcode objective-c uitableview
我试图从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];
}
...
Run Code Online (Sandbox Code Playgroud)
有人知道如何从AppDelegate.m重新加载数据吗?
你可以实施
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reloadTableViewData) name:@"ReloadAppDelegateTable" object:nil];
Run Code Online (Sandbox Code Playgroud)
在你的viewDidLoad()
方法和
- (void)reloadTableViewData{
[self.myTableView reloadData];
}
Run Code Online (Sandbox Code Playgroud)
在要重新加载数据的类中.
然后你发送这样的通知
[[NSNotificationCenter defaultCenter] postNotificationName:@"ReloadAppDelegateTable" object:nil];
Run Code Online (Sandbox Code Playgroud)
每当你想重新加载数据.
注意经过几年的iOS开发经验:
虽然这是一个非常简单和舒适的解决方案,但它并非100%可靠.在某些情况下,通知可能会延迟几秒钟.我强烈建议您创建一个快速可靠的委托连接UITableViewController
.
归档时间: |
|
查看次数: |
2396 次 |
最近记录: |