7 berichten aan het bekijken - 1 tot 7 (van in totaal 7)
  • Q:
    Bijdrager
    2eSteve

    UITableViews in UIScrollView: landscape probleem

    Hallo allemaal,

    Ik heb 5 table views in een uiscroll view gedaan, met deze code:

    int pages = 5;
    tableViews = [[NSMutableArray alloc] initWithCapacity:pages];
    self.scrollView.pagingEnabled = YES;
    [self.scrollView setContentSize:CGSizeMake(self.scrollView.frame.size.width * pages, 331)];
    [self.scrollView setContentOffset:CGPointMake(self.scrollView.contentOffset.x, 0)];

    for (int i = 0; i < pages; i++) {
    UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectMake(i * 320, 0, self.scrollView.frame.size.width, self.scrollView.contentSize.height) style:UITableViewStyleGrouped];
    UINib *cell = [UINib nibWithNibName:@”CustomCell” bundle:nil];
    ;

    tableView.dataSource = self;
    tableView.delegate = self;
    tableView.tag = i + 1;
    [self.scrollView addSubview:tableView];
    ;
    }

    self.pageControl.numberOfPages = pages;
    self.pageControl.currentPage = 0;

    Nog wat extra info hierover:
    -ik heb 2 IBOutlets: een voor de scroll view, en een voor de page control.
    -ik heb een nib file met een aangepaste cell erin, omdat ik geen prototype cells kan gebruiken op deze manier.

    Dit is mijn code voor de UIScrollViewDelegate en om de page control goed te laten werken:

    – (int)getNewNumberForNumber:(int)number withDirectionLeft:(BOOL)leftTrue
    {
    if (!leftTrue) {
    if (number > 320) return number – 320;
    else return self.scrollView.contentSize.width;
    } else {
    if (number < self.scrollView.contentSize.width – 320) return number + 320;
    else return 0;
    }
    }

    – (void)scrollViewDidScroll:(UIScrollView *)scrollView
    {
    if ([scrollView.superview isKindOfClass:[UIScrollView class]]) return;
    if (pageControlIsChangingPage) return;

    CGFloat pageWidth = scrollView.frame.size.width;
    int page = floor((scrollView.contentOffset.x – pageWidth / 2) / pageWidth) + 1;
    int oldPage = self.pageControl.currentPage;
    self.pageControl.currentPage = page;

    [self updateTitleForOldPage:oldPage andNewPage:page];
    }

    – (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
    {
    pageControlIsChangingPage = NO;
    }

    – (IBAction)changePage:(UIPageControl *)sender
    {
    CGRect frame = self.scrollView.frame;
    frame.origin.x = frame.size.width * self.pageControl.currentPage;
    frame.origin.y = 0;

    [self.scrollView scrollRectToVisible:frame animated:YES];
    pageControlIsChangingPage = NO;
    }

    nog wat extra info hierover:
    -ik heb een instance variabel voor pageControlIsChangingPage, een boolean (maar dat had je waarschijnlijk wel begrepen :lol:)

    Kan iemand me helpen? Als er nog meer info nodig is, vraag het dan even

    Bijdrager
    2eSteve

    Heel stom: vergeten het probleem te vertellen. Het probleem is dat het er raar uitziet in landschape: de tableviews hebben niet de breedte van het scherm en de scroll view z’n content is ook niet groot genoeg.

    Inactief
    Anoniem

    Pas je ├╝berhaupt de breedte wel aan wanneer je -shouldAutorotateToInterfaceOrientation() uitgevoerd word?
    Of heb je in je nib files autosizing aanstaan?

    Bijdrager
    2eSteve

    Ik heb het geprobeerd, maar ik weet niet hoe ik mijn table views moet resizen. Kan je me helpen?

    Inactief
    Anoniem

    setFrame al geprobeerd? Alhoewel ik laatst wel te horen kreeg dat dit eigenlijk niet mag op je tableViewController

    Inactief
    Anoniem

    Kan dat niet met de autosize optie in Xcode?

    Bijdrager
    2eSteve

    @koen kan dat ook in storyboards? Ik heb die functie daar namelijk nog niet gevonden. Bedenk wel dat ik de Table views volledig in code maak, alleen een aparte cel zit in een nib.

7 berichten aan het bekijken - 1 tot 7 (van in totaal 7)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.