2011-04-19 53 views
0

我想从用户登录到应用程序后,从web服务中为特定用户(他的项目)填充UITableView的数据。从web服务获取用户特定的数据来填充UITableView

例如:

tableData = [[NSMutableDictionary alloc] initWithCapacity:DICTIONARY_INITIAL_CAPACITY]; 
//CURRENT PROJECT 
//get the information from the server 
NSArray *currentProject = [[IHMObjectFinderServices sharedIHMObjectFinderServices]  getCurrentProjectAsArray:connectedUserId]; 
if(![currentProject isEqual:[NSNull null]]) { 
    //put the info in a dictionnary 
    NSMutableDictionary *currentProjectDictionary = [[NSMutableDictionary alloc] initWithCapacity:PROJECT_DICTIONARY_CAPACITY]; 
    [currentProjectDictionary setObject:[currentProject objectAtIndex:INDEX_PROJECT_NAME] forKey:KEY_PROJECT_NAME]; 
    [currentProjectDictionary setObject:[currentProject objectAtIndex:INDEX_PROJECT_MANAGER] forKey:KEY_PROJECT_MANAGER]; 
    [currentProjectDictionary setObject:[currentProject objectAtIndex:INDEX_PROJECT_TAG] forKey:KEY_PROJECT_TAG]; 
    NSArray *activitiesForProject = [NSArray arrayWithArray:[[IHMObjectFinderServices sharedIHMObjectFinderServices] getAvailableActivities:[currentProjectDictionary valueForKey:KEY_PROJECT_TAG]]]; 
    [currentProjectDictionary setObject:activitiesForProject forKey:KEY_PROJECT_ACTIVITIES]; 

    [tableData setObject:currentProjectDictionary forKey:KEY_CURRENT_PROJECT]; 

目前,在viewDidLoad方法我的表负荷,所以问题是构建表,当用户尚未连接。

我已阅读有关reloadData方法,但我不知道如何继续加载表只有一次,一旦用户登录。有人可以向我解释什么是正确的过程呢?

感谢您的帮助, 迈克尔

回答

0

应该有某种回调方法的时候了的tableView的数据是可用的。只需把你的reloadData放在里面。

- (void)dataIsAvailable 
{ 
    // ... your code to set the tableData ... 

    [self.tableView reloadData]; 
} 
+0

感谢您的回答,我需要重新考虑从服务器获取数据的方式,因为目前我使用的是同步请求,所以在数据可用时没有回调方法。 – Themikebe 2011-04-19 08:38:55

+0

啊,你应该前往[ASIHTTP框架](http://allseeing-i.com/ASIHTTPRequest/),非常容易使用。只需实现一些在请求失败或成功时调用的委托方法。在这种情况下,reloadData将以ASI术语' - (void)requestFinished:(ASIHTTPRequest *)request'委托方法进入。 – 2011-04-19 08:42:51

+0

谢谢,我已经在使用这个框架:-) 我还在挣扎的一点是,一旦用户登录(我需要他的ID来获取他的数据),如何触发请求。 即使我刚刚在用户登录后获取数据,我如何将它传递给我的tableView? – Themikebe 2011-04-19 08:58:46

相关问题