Как отображать таблицу с нулевыми строками в UITableView

Я загружаю содержимое в UITableView динамически. Если есть данные, таблица должна отображать данные. Если нет данных, в таблице должна отображаться простая страница. Но в моем приложении таблица отображает обычную страницу с двумя разделительными линиями. Мне нужно удалить эту разделительную линию и отобразить обычную белую страницу. Пожалуйста, предложите?

Любая помощь будет оценена!

Ответ 1

Если вы предоставите представление нижнему колонтитулу, разделители между пустыми строками исчезнут.

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 1, 1)];
myTableView.tableFooterView = view;

Ответ 2

Вы можете проверить пустой случай, если ваш источник данных пуст, добавьте представление заполнителя поверх таблицы. Если они не пустые, удалите их.

Ответ 3

Обычный UITableView всегда будет отображать разделительные строки, даже если он пуст. Вы могли заметить, что если у вас есть список только с одной или двумя строками, все еще видны линии разделителя. Это поведение по умолчанию и не должно быть переопределено, если у вас нет серьезной причины действительно.

Я предполагаю, что вы видите только две разделительные линии, потому что ваши строки очень высоки?

Если вам нужно действительно удалить строки разделителя, то установите для свойства separatorStyle в виде таблицы значение UITableViewCellSeparatorStyleNone. Обратите внимание, что это повлияет на все строки. Поэтому, если вам все еще нужны разделители для существующих строк, вы должны нарисовать эти разделительные строки в своих UITableViewCell объектах.

Ответ 4

Его можно упростить до одной строки, используя решение @bbarnhart:

myTableView.tableFooterView = [[[UIView alloc] initWithFrame:CGRectZero] autorelease];

Ответ 5

Два шага:

добавить этот код в viewDidLoad

- (void)viewDidLoad
{
    emptyplaceholder = [[UILabel alloc] initWithFrame:CGRectMake(80, 100, 640, 100)];
    emptyplaceholder.text = NSLocalizedString(@"No shift changes...", "no shift changes");
    emptyplaceholder.alpha = 0.2;

    [self.view addSubview:emptyplaceholder];

}

добавить этот код в контроллерDidChangeContent:

- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller {
    // The fetch controller has sent all current change notifications, so tell the table view to process all updates.

    if (self.fetchedResultsController.fetchedObjects.count > 0)
        emptyplaceholder.hidden = YES;
    else
        emptyplaceholder.hidden = NO;

    [self.tableView endUpdates];
}

поэтому UILable исчезнет, ​​когда у вас есть ячейка даты, когда нет данных в таблице, ярлык будет отображаться снова.

Ответ 6

Хороший дизайн пользовательского интерфейса для добавления нового UIView в UIViewController, когда нет данных "Нет данных", добавив его, будут скрыты разделительные строки UITableView