TableView 没有更新

Posted

技术标签:

【中文标题】TableView 没有更新【英文标题】:TableView is not updating 【发布时间】:2015-09-02 23:40:56 【问题描述】:

我希望你们帮助我编写从网站加载数据的代码。让我们从代码开始:

-(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;

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

我确实添加了:

 [self.tableView reloadData];

但结果还是一样。

她也是我的 NSObject 代码:

-(instancetype)initWithVTheIndex:(NSString *)vTheIndex       
           timeLineVideoUserName:(NSString *)vUserName 
           timeLineVideoDetails:(NSString *)vVideoDetails
           timeLineVideoDate:(NSString *)vVideoDate 
           timeLineVideoTime:(NSString *)vVideoTime 
           timeLineVideoLink:(NSString *)vVideoLink 
           timeLineVideoLikes:(NSString *)vVideoLikes 
           videoImage:(NSString *)vVideoImage 
           timeDeviceToken:(NSString *)vDeviceToken 


    self = [super init];
    if(self)
        self.vvTheIndex = vTheIndex;
        self.vvUserName = vUserName;
        self.vvVideoDetails = vVideoDetails;
        self.vvVideoDate = vVideoDate;
        self.vvVideoTime = vVideoTime;
        self.vvVideoLink = vVideoLink;
        self.vvVideoLikes = vVideoLikes;
        self.vvVideoImage = vVideoImage;
        self.vvDeviceToken = vDeviceToken;

    
    return self;

我的问题是:从 DetailsView 移动时,甚至当我拉动刷新时,如何更新 TableView。

提前致谢

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

谢谢Meriw,我知道了【参考方案2】:

在 viewDidLoad 生命周期上,首先 [self.tableView reloadData] 重新加载 tableview,然后再进行另一项工作。

【讨论】:

以上是关于TableView 没有更新的主要内容,如果未能解决你的问题,请参考以下文章

CoreData - TableView 没有得到更新

需要更新tableView

iphone中的tableView没有更新

SwiftAlamofile网络请求数据更新TableView的坑

在发生异步更新时更新 TableView - 请告知!

更新静态 tableView 的滚动