iOS - 无法在加载远程内容后滚动UITableView

时间:2013-01-07 21:33:16

标签: ios uitableview scroll

当我通过块加载远程内容时,我通过调用reloadData来更新UITableView。但是,我无法滚动此数据。我想这是因为我已经声明表中的行数是我的NSArray变量的长度,它将保存列表的内容。但是,当调用它时,列表的计数为零。我会假设通过在tableView上调用reloadData它会再次重新计算列表大小。 也许我错过了一步。 谢谢 这是我的代码

 -(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    dispatch_async(kBgQueue, ^{
        NSData* data = [NSData dataWithContentsOfURL:
                        [NSURL URLWithString: @"MYURL"]];
        [self performSelectorOnMainThread:@selector(fetchedData:)
                               withObject:data waitUntilDone:YES];

    });
}
-(void) fetchedData:(NSData *)responseData
{
    NSError* error;
    id json = [NSJSONSerialization
                          JSONObjectWithData:responseData //1
                          options:kNilOptions
                          error:&error];

    self.dataList = json;
    dispatch_async(dispatch_get_main_queue(), ^(void) {
        [self.tableView reloadData];
    });
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [self.dataList count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"SongCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

    // Configure the cell...
    if([self.dataList count] > 0){
        NSDictionary *chartItem = [self.dataList objectAtIndex:indexPath.row];
        NSDictionary *song = [chartItem objectForKey:@"song"];
        cell.textLabel.text = [song objectForKey:@"title"];
    }

    return cell;
}

2 个答案:

答案 0 :(得分:0)

在异步调用结束时检查您的json对象(因此self.dataList)是否为nil。如果是,则[self.dataList count]将返回0.

另外,请确保正确设置self.dataList.dataSource

答案 1 :(得分:0)

现在正在运作。 问题的原因是我向UITableView添加了一个平移手势

[self.view addGestureRecognizer:self.slidingViewController.panGesture];

这似乎会干扰滚动表格的能力。希望这将有助于将来遇到这种情况的任何人。