TableView未更新

时间:2015-09-02 23:40:56

标签: ios objective-c json xcode uitableview

我希望你们在我的代码中帮助我,这是从网站加载数据。让我们从代码开始:

    <bean name="/items"
      id="itemsRoute"
      autowire="byName"
      scope="prototype"
      parent="abstractRestletResources"
      class="com.my.service.rest.resource.ItemResource"/>

上面的代码是从Url加载数据并填充TableView,这一步正常。该应用程序有另一个ViewController,它是DetailsView,在DetailsView中用户可以更新一些信息。当用户返回TableView时没有发生任何事情(我的意思是数据仍然相同而且没有更新)。我试图从ViewDidAppear调用loadDataFromurl但它不起作用。

我添加了:

-(void)viewDidLoad    
{
    [self loadDataFromUrl];        
}

-(void)loadDataFromUrl {

    NSString *myUrl = [NSString stringWithFormat:@"http://WebSite/PhpFiles/File.php"];

    NSURL *blogURL = [NSURL URLWithString:myUrl];
    NSData *jsonData = [NSData dataWithContentsOfURL:blogURL];
    NSError *error = nil;
    NSDictionary *dataDictionary = [NSJSONSerialization
                                    JSONObjectWithData:jsonData options:0 error:&error];

    for (NSDictionary *bpDictionary in dataDictionary) {

      HotelObject *currenHotel = [[HotelObject alloc]initWithVTheIndex:                  
           [bpDictionary objectForKey:@"TheIndex"] timeLineVideoUserName:
           [bpDictionary objectForKey:@"timeLineVideoUserName"] timeLineVideoDetails:
           [bpDictionary objectForKey:@"timeLineVideoDetails"] timeLineVideoDate: 
           [bpDictionary objectForKey:@"timeLineVideoDate"] timeLineVideoTime:
           [bpDictionary objectForKey:@"timeLineVideoTime"] timeLineVideoLink:
           [bpDictionary objectForKey:@"timeLineVideoLink"] timeLineVideoLikes:
           [bpDictionary objectForKey:@"timeLineVideoLikes"] videoImage:
           [bpDictionary objectForKey:@"videoImage"] timeDeviceToken:
           [bpDictionary objectForKey:@"deviceToken"]];

           [self.objectHolderArray addObject:currenHotel];

    }    

}

-(NSMutableArray *)objectHolderArray{
    if(!_objectHolderArray) _objectHolderArray = [[NSMutableArray alloc]init];
    return _objectHolderArray;
}


- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:
(NSInteger)section
{
    return [self.objectHolderArray count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:
(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    Cell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier
                                                      forIndexPath:indexPath];
    HotelObject *currentHotel = [self.objectHolderArray
                                 objectAtIndex:indexPath.row];
    cell.lblID.text = currentHotel.vvTheIndex;
    cell.lblName.text = currentHotel.vvUserName;
    cell.lblCity.text = currentHotel.vvVideoDate;
    cell.lblAddress.text = currentHotel.vvVideoLikes;
    return cell;
}

但结果仍然相同。

她也是我的NSObject代码:

 [self.tableView reloadData];

我的问题是:如何在从DetailsView移动时甚至在我进行刷新时更新TableView。

提前致谢

2 个答案:

答案 0 :(得分:0)

您没有正确地重新加载UITableView的数据源。

假设远程URL正在使用新数据进行更新,并且问题只是重新加载TableView,请确保在[self.tableView reloadData]完成之后添加loadDataFromUrl

reloadData方法将始终刷新表格的内容,因此要么没有在正确的时间调用,要么您没有更新self.objectHolderArray。 (您可以在更新后调用loadDataFromUrl后设置断点来调试它。)

答案 1 :(得分:0)

在viewDidLoad生命周期第一次[self.tableView reloadData]重新加载tableview然后另一项工作。