2 votes

Comment ajouter un TableView avec deux sections à UIScrollView en tant que sous-vue

Dans mon code, la vue du tableau s'affichera mais lorsque je fais défiler la vue du tableau, elle sera complètement défilée. J'ai uniquement défilé la cellule de la vue du tableau. S'il vous plaît, quelqu'un peut-il m'aider. Voici mon code.

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

2voto

Ashok Points 2514

Je ne vois aucun problème dans le code que vous avez fourni. Vous voudrez peut-être vérifier d'autres parties des vues ou partager plus d'informations ici afin que je puisse vous aider.

J'ai ajouté votre code à mon projet d'exemple et j'ai pu faire défiler pour voir la vue du tableau. Voici le code que j'ai utilisé (presque le même que le vôtre, j'ai commenté les étiquettes)

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Effectuez toute configuration supplémentaire après le chargement de la vue.

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

0voto

Paras Joshi Points 12436

Voici deux façons de répondre à ces exigences :

1. il suffit de définir contentSize de UIScrollView en fonction de contentSize.height de UITableView

ajoutez simplement ce code après votre code précédent

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

définissez également scrollEnabled = NO; pour le tableView comme vous l'avez fait dans votre code

et 2. Lorsque la TableView est défilée, définissez scrollEnabled = NO pour UIScrollView.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X