В iOS 11 используйте adjustedContentInset
для правильной прокрутки вверх для обоих случаев, когда строка состояния во время разговора видна или нет.
if (@available(iOS 11.0, *)) {
[tableView setContentOffset:CGPointMake(0, -tableView.adjustedContentInset.top) animated:YES];
} else {
[tableView setContentOffset:CGPointMake(0, -tableView.contentInset.top) animated:YES];
}
Swift:
if #available(iOS 11.0, *) {
tableView.setContentOffset(CGPoint(x: 0, y: -tableView.adjustedContentInset.top), animated: true)
} else {
tableView.setContentOffset(CGPoint(x: 0, y: -tableView.contentInset.top), animated: true)
}
It's usually a good idea to favor normalization. The second solution keeps your models cleaner, allows for easy extensibility if new preferences are added, and keeps your tables uncluttered.
Подход 2
Вы можете добавлять настройки, не загромождая пользовательскую таблицу
Есть несколько плагинов Rails для обработки этого варианта использования:
Я бы подошел к 2 , потому что он чище и проще обновлять. Вы сможете добавлять более сложные настройки по своему усмотрению.
Это будет немного медленнее, поскольку вам нужно выполнить соединение, но оно того стоит