2

在我的编码中,表格视图将显示,但是当我滚动表格视图时,它将完全滚动。我只滚动了表格视图单元格。请任何人帮助我。这是我的代码。

[super viewDidLoad];
scrollview=[[UIScrollView alloc]initWithFrame:CGRectMake(0,0,320,460)];
scrollview.showsVerticalScrollIndicator=NO;
scrollview.scrollEnabled=YES;
scrollview.userInteractionEnabled=YES;
[self.view addSubview:scrollview];
scrollview.contentSize = CGSizeMake(320,900);
[scrollview addSubview:recipePhoto];
[scrollview addSubview:detailLabel];
[scrollview addSubview:prizeLabel];
[scrollview addSubview:discountLabel];
[scrollview addSubview:saveLabel];
UITableView  *tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 480, 600, 400) style:UITableViewStylePlain];
[tableView setAutoresizesSubviews:YES];
[tableView setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)];
tableView.scrollEnabled = NO;
tableView.backgroundColor=[UIColor clearColor];
[tableView setDataSource:self];
[tableView setDelegate:self];
[scrollview addSubview:tableView];
[tableView reloadData];
4

2 回答 2

2

我在您提供的代码中没有看到任何问题。您可能想查看视图的其他部分或在此处分享更多信息,以便我为您提供帮助。

我在示例项目中添加了您的代码,并且能够滚动查看表格视图。下面是我使用的代码(几乎和你的一样,注释标签)

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    UIScrollView *scrollview=[[UIScrollView alloc]initWithFrame:CGRectMake(0,0,320,460)];
    scrollview.showsVerticalScrollIndicator=NO;
    scrollview.scrollEnabled=YES;
    scrollview.userInteractionEnabled=YES;
    [self.view addSubview:scrollview];
    scrollview.backgroundColor = [UIColor grayColor];
    scrollview.contentSize = CGSizeMake(320,900);
//    [scrollview addSubview:recipePhoto];
//    [scrollview addSubview:detailLabel];
//    [scrollview addSubview:prizeLabel];
//    [scrollview addSubview:discountLabel];
//    [scrollview addSubview:saveLabel];
    UITableView  *tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 480, 600, 400) style:UITableViewStylePlain];
    [tableView setAutoresizesSubviews:YES];
    [tableView setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)];
    tableView.scrollEnabled = NO;
    tableView.backgroundColor=[UIColor clearColor];
    [tableView setDataSource:self];
    [tableView setDelegate:self];
    [scrollview addSubview:tableView];
    [tableView reloadData];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 1;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    NSString *cellIdentifier = @"CellIdentifier";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

    if (!cell) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
    }
    cell.textLabel.text = [NSString stringWithFormat:@"cell %d", indexPath.row];
    cell.backgroundColor = [UIColor blueColor];
    return cell;
}
于 2013-08-07T13:35:31.683 回答
0

这里有两种方法来完成该要求:

1. 刚刚设置contentSizeUIScrollView相关UITableView contentSize.height

只需在上述代码之后添加此代码

tableView.frame = CGRectMake(tableView.frame.origin.x, tableView.frame.origin.y, tableView.frame.size.width, tableView.contentSize.height);

float fscrview = tableView.frame.origin.y + tableView.contentSize.height + 20;
yourScrollView.contentSize=CGSizeMake(320, fscrview);

还设置scrollEnabled = NO;为您在代码中设置的 tableView

2.当 TableView 在那个时候滚动时设置scrollEnabled = NOUIScrollView

于 2013-08-07T12:50:36.620 回答