现在一直在寻找解决方案,但仍然没有成功,也许这里有人可以帮助我。
我创建了一个运行一个线程的应用程序,该线程在后台与Web服务器通信。有时线程会收到我想在UITableView中显示的信息。由于内容的动态性,我决定NSMutableArray应该足以存储来自网络服务器的信息。
每当我从网络服务接收信息时,我的AppDelegate都会发送通知。我的UITableView注册接收我打算在UITableView中显示的某些类型的信息。
UITableViewController的initWithStyle方法包含以下代码:
- (void)addContact:(NSNotification *)note {
NSLog(@"%@", [note object]);
NSString *message = (NSString *)[note object];
NSString *name = [[message componentsSeparatedByString:@":"] objectAtIndex:2];
contact = name;
[array addObject:contact];
}
- (void)viewDidLoad {
[super viewDidLoad];
array = [[NSMutableArray alloc] initWithObjects:@"test1", @"test2", nil];
tv.dataSource = self;
tv.delegate = self;
self.tableView = tv;
}
AddContact中的数组包含TableView中显示的数据。我在ViewDidLoad中手动添加到数组的所有数据都将显示在表中,但对于AddContact:方法中添加的数据不会发生。
任何人都知道我做错了什么?
答案 0 :(得分:1)
更新是否发生在主线程上? 您可以使用这种刷新功能来确保它。
- (void)refresh {
if([NSThread isMainThread])
{
[self.tableView reloadData];
[self.tableView setNeedsLayout];
[self.tableView setNeedsDisplay];
}
else
{
[self performSelectorOnMainThread:@selector(refresh) withObject:nil waitUntilDone:YES];
}
}