Вопрос по ios, uiviewcontroller, scroll, uiscrollview, uitableview – Как встроить UITableView в UIScrollview

17

Как я могу сделать следующее в UIViewController (содержащий табличное представление в качестве подпредставления)

У меня изначально есть UIViewController, показывающий раздел предварительного просмотра (UIView)

<code>//Setup container for preview section
UIView *tempContainer = [[UIView alloc]initWithFrame:CGRectMake(0, 20, 320, 100)];
self.preview_answer_container = tempContainer;
self.preview_answer_container.backgroundColor = [UIColor clearColor];
[tempContainer release];
[self.view addSubview:self.preview_answer_container];
</code>

Я также добавил UITableView (и панель поиска) ниже

<code>//setup tableview
UITableView *tempTable = [[UITableView alloc]initWithFrame:CGRectMake(0,44 ,320,self.view.frame.size.height - 44)];
self.tagFriendsTableView = tempTable;
self.tagFriendsTableView.delegate = self;
self.tagFriendsTableView.dataSource = self;
[tempTable release];

[self.view addSubview:self.tagFriendsTableView];
</code>

enter image description here

При такой настройке моя область прокрутки мала (только статическая область ниже раздела предварительного просмотра)

Как я могу изменить свой код так, чтобы 1) Я могу прокрутить всю страницу вверх, т.е. раздел предварительного просмотра и просмотр таблицы будут прокручиваться вместе 2) Прокрутка в целом остановится, когда панель поиска достигнет вершины (ниже панели навигации) (см. Скриншот), но содержимое в UITableView все еще можно прокручивать

enter image description here

РЕДАКТИРОВАТЬ:

Добавлен код для просмотра UIScroll. Однако для меня ничего не изменилось. Что не так с моим кодом?

<code>//setup scroll view
UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];

//Search
UISearchBar *tempBar = [[UISearchBar alloc]initWithFrame:CGRectMake(0, 120 + 20, 320, 44)];
self.sBar = tempBar;
[tempBar release];
self.sBar.delegate = self;
self.sBar.tintColor = [UIColor colorWithHexString:@"#b6c0c7"];
self.sBar.placeholder = @"Search for FB and DM friends";

[scroll addSubview:sBar];

//setup tableview
UITableView *tempTable = [[UITableView alloc]initWithFrame:CGRectMake(0,144 + 20 + 20 ,320,self.view.frame.size.height - 144 - 20 - 20 - 44)];
self.tagFriendsTableView = tempTable;
self.tagFriendsTableView.delegate = self;
self.tagFriendsTableView.dataSource = self;
[tempTable release];

//Add the scroll view to the parent view
[scroll addSubview:self.tagFriendsTableView];

scroll.contentSize = CGSizeMake(self.view.frame.size.width, self.view.frame.size.height);
[self.view addSubview:scroll];
[scroll release];
</code>

Ваш Ответ

6   ответов
0

tableView: viewForHeaderInSection & quot ;.

33

достаточно использовать только tableView

make the "Preview View" as the HeaderView of your tableView

make the "Search Bar" as the Section Header View of your tableView

Вы можете сделать это отлично :)

Это работает только для tableView с одним разделом.
Может ли кто-нибудь еще объяснить это мне? пожалуйста
0
scroll.contentSize = CGSizeMake(self.view.frame.size.width, self.view.frame.size.height);

потому что contentSize недостаточно велик. Вам нужно увеличить длину до общей длины вашего контента, который находится поверх scrollView.

1

размер экрана которого минус панель навигации. Установите фон UIScrollViews в clearColor, чтобы ваш контент над UITableView оставался видимым.

Вы должны использовать решение DBD / adali, оно лучше моего :)
Привет, спасибо за ваш ответ. Я добавил некоторый код для представления UIScroll, но он не работал для меня, то есть ничего не изменилось по сравнению с моей первоначальной реализацией. Можете ли вы помочь мне взглянуть на мой отредактированный вопрос? Я добавил свой код uiscrollview там. заранее спасибо Zhen
3

UITableView и установите панель предварительного просмотра, чтобы бытьtableHeaderView и ваше поле поиска будет заголовок раздела, используяtableView:viewForHeaderInSection: в вашемUITableViewDelegate.

Заголовок таблицы будет прокручиваться сверху во время события прокрутки. Заголовки разделов плавают и остаются видимыми все время, пока этот раздел видим. Если у вас есть только 1 раздел, то заголовок раздела будет там все время.

2

1. Отключите прокрутку tableView. 2. Установите ограничение по высоте для tableView и подключенного к нему IBOutlet. 3. Перед перезагрузкой данных рассчитайте высоту таблицы.heightConstraint.constant = (heightOfTheSingleTableViewCell) * numOfRows

Похожие вопросы