Как добавить UITableView в UIScrollView с PageControl - PullRequest
2 голосов
/ 17 января 2012

В моем ViewController у меня есть два uitableview.Один из них является статическим с одним разделом и двумя рядами, а другой имеет один раздел, но четыре строки.Я хотел бы сделать UIScrollview с UIPageControl, и на каждой странице я хотел бы добавить второй tableView с четырьмя строками.Но номер страницы в scrollView можно изменить.Поэтому я пытаюсь с UILabel, и он работает, но с tableView я не вижу его.

Я не знаю, понимаете ли вы мою проблему.Я поместил код моего цикла.

for (int i = 1; i < [listAllContactDetails count] + 1; i++) 
 {
        UILabel *nomContact = [[UILabel alloc] initWithFrame:CGRectMake((i-1)*320, 20, 320, 30)];
        nomContact.backgroundColor = [UIColor yellowColor];
        nomContact.text = [[listAllContactDetails objectAtIndex:i-1] valueForKey:@"name"];
        [scroller addSubview:nomContact];
        [nomContact release];
 }

 scroller.delegate = self;
 scroller.contentSize = CGSizeMake(320*[listAllContactDetails count], 249);
 scroller.pagingEnabled = YES;

 pageControl.numberOfPages = [listAllContactDetails count];
 pageControl.currentPage = 0;

Этот код прямо с UILabel, но не с UITableView.

Спасибо за вашу помощь.

1 Ответ

3 голосов
/ 17 января 2012

Вы должны иметь возможность добавить UITableView на каждую страницу, установив его рамку в цикле точно так же, как вы делаете с метками.

Проблема заключается в подключении источника данных.Вам нужно будет привязать свойство источника данных каждого табличного представления к контроллеру представления внутри вашего цикла.Затем присвойте каждой таблице в цикле свое свойство .tag на основе индекса цикла.В ваших методах источника данных вам нужно будет проверить тег таблицы, чтобы понять, какая это страница.Вот так:

for (int i = 0; i < [listAllContactDetails count]; i++) 
 {
        UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectMake(i*320, 0, 320, 200) style:...]
        tableView.dataSource = self;
        tableView.tag = i + 1;
        [scroller addSubview:tableView];
        [tableView release];
 }

 scroller.delegate = self;
 scroller.contentSize = CGSizeMake(320*[listAllContactDetails count], 249);
 scroller.pagingEnabled = YES;

 pageControl.numberOfPages = [listAllContactDetails count];
 pageControl.currentPage = 0;

...

 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
 {
        NSInteger tag = tableView.tag;
        switch (tag)
        {
            case 1:
                return numberOfRowsForPage1;
            case 2:
                return numberOfRowsForPage2;
            etc...
        }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...