12. Плюсы
• Скорость интеграции
• StaticCells
• Удобная интеграция UIRefreshControl
• Мелкие локальные улучшения
• Автоматическая отмена выделения
• Автоматическое отслеживание сдвига при
появлении клавиатуры
13. Минусы
• Нельзя задать размер таблицы
• Нельзя добавлять другие UIView на
UITableViewController
14. Плюсы
• Скорость интеграции
• StaticCells
• Удобная интеграция UIRefreshControl
• Мелкие локальные улучшения
• Автоматическая отмена выделения
• Автоматическое отслеживание сдвига при
появлении клавиатуры
15. func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
tableView.deselectRowAtIndexPath(indexPath, animated: true)
// Any actions here
}
Автоматическая отмена выделения
16. • Подписаться на уведомления о появлении и
исчезновении клавиатуры
• Менять contentInset и scrollIndicatorInsets
• Не забыть отписаться ;)
Автоматическое отслеживание
сдвига при появлении клавиатуры
21. Свой разделитель
• Создать класс, который наследуется от
UITableViewCell
• Для ячеек, созданных с интерфейса расширяем:
• awakeFromNib() (все связи гарантированно
подгружены)
• init(coder aDecoder: NSCoder)
• Для ячеек, созданных из кода:
• init(style: UITableViewCellStyle, reuseIdentifier:
String?)
22. Работа с выделением
• setSelected(selected: Bool, animated: Bool)
• setHighlighted(highlighted: Bool, animated: Bool)
• Задать selectedBackgroundView
29. Кастомный Pull-To-Refresh
• Создать кастомные UIView:
• Он должен отслеживать движение scrollView
• Можно сделать через KVO
• Можно сделать через target к жесту
• В методе scrollViewDidScroll: отслеживать
contentOffset и взаимодействовать с этим View
• Добавить этот view к верху таблицы
• Если идет загрузка можно
• Двигать contentInset
• Добавлять этот view в header таблицы
31. Release to Create Item
• Добавить UIPinchGestureRecognizer на таблицу
• Если жест начался, то расчитывать середину жеста
и добавлять новую ячейку
• При движении пальцев высчитывать размер для
этой ячейки и делать tableView.reloadData()
32. Release to Create Item
func pinchGestureAction(sender: UIPinchGestureRecognizer) {
if sender.state == .Began {
startValue = sender.scale
let point = sender.locationInView(tableView)
insertedIndexPath = tableView.indexPathForRowAtPoint(point)
} else if sender.state == .Changed {
deltaValue = abs(startValue - sender.scale)
} else {
insertedIndexPath = nil
}
reloadCells()
}
Самый элементарный вариант
33. Release to Create Item
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) ->
CGFloat {
if indexPath == insertedIndexPath {
return 80 * (1.0 + deltaValue)
}
return 80
}
Самый элементарный вариант