UITableView (Controller) - Скрыть пустые строки - PullRequest
6 голосов
/ 09 сентября 2010

Я пытаюсь создать UITableView, который отображает только количество строк с содержанием данных в них.Это система меню, и предположим, что есть 5 вариантов в конкретном меню, я только хочу показать 5 строк на экране, с фоновым изображением вместо того, где бы были пустые строки (аналогичным примером, я думаюМировое время).Как я должен идти об этом?Я бродил вокруг, но не могу найти ничего, что поможет.Большое спасибо.

---------------------
Menu Item 1
---------------------
Menu Item 2
---------------------
Rest of view as image




---------------------

Использование сгруппированного табличного представления работает, но я не очень хочу его использовать.

1 Ответ

4 голосов
/ 09 сентября 2010

Ваш UITableView может иметь backgroundView.Установите его как UIImageView, и установите его рамку на границы табличного представления.Этот код не проверен, но должен дать вам представление.

UIImage * img = [UIImage imageNamed:@"myImage.jpg"];
UIImageView * imgView = [[UIImageView alloc] initWithImage:img];
imgView.frame = myTableView.bounds;
myTableView.backgroundView = imgView;

РЕДАКТИРОВАТЬ: Приведенный выше будет создавать фон, как мировое время.чтобы он отображался ниже других ячеек как ячейка, измените источник данных:

- numberOfRowsInSection:section: должен вернуть на единицу больше, чем раньше.- tableView:canEditRowAtIndexPath: и tableView:canMoveRowAtIndexPath: должны вернуть NO для этой новой ячейки.- (UITableViewCell *)tableView:cellForRowAtIndexPath: необходимо создать новую ячейку, когда она запрашивается, поэтому, если у вас есть 5 ячеек данных, шестая вернет:

UITableViewCell * cell = //create your cell
//change the height to match the remaining space
UIImage * img = [UIImage imageNamed:@"myImage.jpg"];
UIImageView * imgView = [[UIImageView alloc] initWithImage:img];
cell.backgroundView = imgView;

Я не уверен, нужно ли вам настраивать вид изображенияsize, но вам нужно установить размер ячейки, чтобы он занимал оставшееся пространство, с чем-то вроде этого в вашем делегате табличного представления tableView:heightForRowAtIndexPath: для последней строки:

//if final row
return myTableView.bounds.size.height - 16.0 * myData.count; //modify from the default 16.0 as needed.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...