2015-03-24 2 views
0

Я делаю приложение Calendar, и я показываю события из Календаря в UITableView. Я использую tableFooterView, чтобы скрыть строки разделителя в таблице UITableView, когда таблица пуста. Я делаю это с помощью следующего кода:Пустой UITableView по-прежнему показывает пустые ячейки

self.tableView.tableFooterView = [[UIView alloc] init]; 
UILabel *footerTableViewLabel = [[UILabel alloc] init]; 
footerTableViewLabel.text = @"No items."; 
[self.tableView.tableFooterView addSubview:footerTableViewLabel]; 

Если есть элементы в таблице, я прячу эту точку зрения, и если я не показывать. Это прекрасно работает, если календарь изначально пуст. Однако, если я удалю событие из Calendar.app, пока мое приложение все еще работает в фоновом режиме, когда я вернусь в приложение, все, что я вижу, это пустая пустая ячейка и разделитель, и никакой ярлык с надписью «Нет элементов».

Любые идеи?

EDIT: Я показать/скрыть вид колонтитула с помощью:

self.tableView.tableFooterView.hidden = NO/YES; 

Что касается событий, считается, не дает возможности удалить их непосредственно из моего приложения, я просто обнаружить, когда они удаляются из Calendar.app. К сожалению, я не могу показать код, выполняющий это обнаружение, поскольку он является частью частной библиотеки, однако это прекрасно работает, то есть я прыгаю в нужные части кода, когда событие удаляется.

+0

Показать код для показа/скрытия нижнего колонтитула и удаления события. –

ответ

0

Вы можете попробовать это ип код, чтобы скрыть разделители: self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;

+0

Да, но я бы все же хотел показать свой footerView и ярлык, говорящий, что нет предметов, а не полностью белого. – Banana

0

Используйте self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;, чтобы скрыть линии сепаратора. Если вы хотите, чтобы активное Tableview клетка имеют сепараторы, вы всегда можете добавить рамку к нижней части каждой ячейки вручную с помощью функции, как это:

- (void)addBottomBorderWithColor:(UIColor *)color andHeight:(CGFloat) borderHeight 
{ 
    CALayer *borderBottom = [CALayer layer]; 
    borderBottom.backgroundColor = color.CGColor; 
    borderBottom.frame = CGRectMake(0, self.frame.size.height, self.frame.size.width, borderHeight); 
    [self.layer addSublayer:borderBottom]; 
} 

** EDIT ** Если вы хотите добавить мнение который указывает «нет данных», попробуйте добавить это как представление под табличным представлением, а затем просто установите отображение таблицы в скрытое, если данных нет.

Надеется, что это помогает

0

Итак, я наконец-то удался это выяснить. Были на вопросы:

  1. По какой-то причине (возможно, когда я [self.tableView reloadData]), self.tableView.tableFooterView стал бы ноль, и поэтому я мог видеть пустые ячейки. Переназначение взгляда на него устранило эту проблему.

  2. Мне пришлось обновить ограничения вида для нижнего колонтитула и метки, которые он содержит.

Смежные вопросы