从对象传递数据后,TableView不会重新加载

时间:2012-11-06 09:27:51

标签: iphone ios uitableview uiactivityindicatorview

我在开发Iphone应用程序。我正在使用NSObject文件进行所有webservices解析Asynchronously,并使用协议方法将webservice结果(通常为NSMutableArray)传递给ViewController

然后我在tableview显示结果。但我的问题是表没有重载,因为在调用协议方法后,控制器返回NSObject文件并且表没有重新加载。

我还尝试用方法-(void)tableReload来说出两个陈述

[tblview reloadData];
[spinner stopAnimating];

in protocol。

我在调用协议第一个方法之后调用tableReload方法。

这是我的代码:

-(void)requestFinished:(ASIHTTPRequest *)request
{

//My parsed data is stored in array
id<EventRepository>aReposit;

    aReposit=(id<EventRepository>)eventLVC;
    [aReposit successResponse:array];
    [aReposit tableReload];

}

-(NSString *)successResponse:(NSMutableArray *)sresponse

{

//This is my first delegate method in protocol
//storing sresponse array value into another array here and using this array in tableview methods

}

-(void)tableReload

{

    NSLog(@"This is TableReload Delegate Method in ListViewController");
    self.tblView.delegate=self;
    self.tblView.dataSource=self;
    [self.tblView reloadData];
    [self.spinner stopAnimating];

}

调用上面两个方法后,控制返回到对象文件,活动指示器没有停止,表没有重新加载。

任何机构都可以提出解决这个问题的想法或建议。

由于

2 个答案:

答案 0 :(得分:0)

首先 - &gt;是你的tableReload方法被调用?

如果是,

关于TableViewData - 检查您在表上显示的数据。其内容是否已更改。尝试使用NSLog。

关于微调器 - 您的IBOutlet连接是否正确连接。

如果一切顺利,请尝试在主线程上调用tableReload。

答案 1 :(得分:0)

在委托函数处停止微调器。

 -(void)tableReload
    {
        [self.spinner startAnimating];
        self.tblView.delegate=self;
        self.tblView.dataSource=self;
        [self.tblView reloadData];
    }


 -(void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
    {
        if([indexPath row] == ((NSIndexPath*)[[tableView indexPathsForVisibleRows] lastObject]).row){
            //table view loaded succesfully
            [self.spinner stopAnimating];
        }
    }