如何将两个Section添加到UIScrollView作为子视图

时间:2013-08-07 12:43:55

标签: iphone ios uiscrollview

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

[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];

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

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

<强> 1 只需设置与contentSize UIScrollView

相关的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 = NO的{​​{1}}。