2009-12-03 19 views
0

一直在尋找一個很長一段時間,現在的解決方案,但仍然沒有成功,也許這裏有人能幫助我。的UITableView使用的NSMutableArray顯示動態內容

我創建了一個應用程序,該應用程序在後臺運行與Web服務器通信的線程。有時線程會收到我想在UITableView中顯示的信息。由於內容的動態性,我決定一個NSMutableArray應該足以存儲來自Web服務器的信息。

每當我從web服務接收到信息時,我的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:方法中添加的數據。

任何人有一個想法,我做錯了什麼?

回答

1

更新是否發生在主線程? 您可以使用這種刷新功能來確保它。

- (void)refresh { 
if([NSThread isMainThread]) 
{ 
    [self.tableView reloadData]; 
    [self.tableView setNeedsLayout]; 
    [self.tableView setNeedsDisplay]; 
} 
else 
{ 
    [self performSelectorOnMainThread:@selector(refresh) withObject:nil waitUntilDone:YES]; 
} 

}

+0

謝謝,固定我的問題! :) – 2009-12-04 09:49:23