1

我是 iOS 新手,我遇到了一些严重的问题,我不知道为什么会这样,我也试图找出这背后的原因,但我失败了。

我正在 iPhone 中创建一个应用程序,它使用 twitter api 获取特定用户的推文,我在获取 json 数据方面没有问题,也能够使用故事板在 iOS 6 的 UITableView 中显示它,我已将行高更改为 200 px,这样我就可以显示用户名文本推文和图像。

但是当我向上或向下UITableViewCell滚动时,滚动条会离开屏幕。

可能是什么原因?我该如何解决?

截图

首先,当应用程序加载滚动条时,它会显示为全屏

在此处输入图像描述


然后当我滚动它时,它会离开屏幕

在此处输入图像描述

最后它完全脱离了屏幕

在此处输入图像描述

UITableView 委托方法

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

    NSMutableArray *name,*time,*tweet,*image;

    name=[[NSMutableArray alloc]init];
    time=[[NSMutableArray alloc]init];
    tweet=[[NSMutableArray alloc]init];
    image=[[NSMutableArray alloc]init];


    static NSString *CellIdentifier = @"SimpleTableItem";

    UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil)
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];


    for (User *userModel in self.user) {
        [name addObject:userModel.nameStr];
        [image addObject:userModel.imageStr];

    }

    for (Json *jsonModel in self.json) {
        [tweet addObject:jsonModel.tweetStr];
        [time addObject:jsonModel.timeStr];


    }

    // Fetch using GCD
    dispatch_queue_t downloadThumbnailQueue = dispatch_queue_create("Get Photo Thumbnail", NULL);
    dispatch_async(downloadThumbnailQueue, ^{
        NSString *imageURL=[image objectAtIndex:indexPath.row];
        NSURL *url = [NSURL URLWithString:imageURL];
        NSData *data = [NSData dataWithContentsOfURL:url];
        UIImage *img = [[UIImage alloc] initWithData:data];
        dispatch_async(dispatch_get_main_queue(), ^{

            UIImageView *image = (UIImageView *)[cell.contentView viewWithTag:5];
            image.image=img;

            [cell setNeedsLayout];
            [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
            [spinner stopAnimating];

        });
    });

    self.labelName = (UILabel *)[cell.contentView viewWithTag:10];
    [self.labelName setText:[NSString stringWithFormat:@"%@", [name objectAtIndex:indexPath.row]]];


   self.labelTime = (UILabel *)[cell.contentView viewWithTag:11];
    [self.labelTime setText:[NSString stringWithFormat:@"%@", [time objectAtIndex:indexPath.row]]];




     self.labelTweet = (UILabel *)[cell.contentView viewWithTag:12];
    [self.labelTweet setText:[NSString stringWithFormat:@"%@", [tweet objectAtIndex:indexPath.row]]];


    cell.imageView.frame=CGRectMake(0, 0, 40, 40);
    cell.textLabel.lineBreakMode=NSLineBreakByWordWrapping;

    return cell;

}

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    CGFloat rowHeight=self.labelName.frame.size.height+self.labelTime.frame.size.height+self.labelTweet.frame.size.height+50;
        return rowHeight;
}
4

3 回答 3

2

滚动出屏幕意味着tableView框架大于屏幕尺寸

setFrame:使用方法正确设置tableview的框架

于 2013-05-22T05:13:48.620 回答
1

我认为您必须检查 UITableView 的高度。显示屏幕截图。

于 2013-05-22T05:12:38.110 回答
0

这里ScrollBar下降,因为Height of TableViewUIView您添加 TableView 的地方大。根据您的视图调整框架,然后ScrollBar不会消失。

于 2013-05-22T05:40:44.623 回答