0

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

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

我也试着用方法-(void)tableReload说这两种说法

[tblview reloadData];
[spinner stopAnimating];

在协议中。

我在调用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];

}

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

请任何机构提出解决此问题的想法或建议。

谢谢

4

2 回答 2

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];
        }
    }
于 2012-11-06T09:51:02.343 回答
0

首先->您的 tableReload 方法是否被调用?

如果是,

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

关于 Spinner - 您的 IBOutlet 连接是否正确连接。

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

于 2012-11-06T09:36:39.693 回答