Я пробовал оба
let rect = tableView.rectForRow(at: indexPath)
tableView.setContentOffset(CGPoint(x: 0, y: rect.origin.y+self.additionalContentOffset), animated: true)
и
tableView.scrollToRow(at: indexPath, at: scrollPosition, animated: true)
И в некоторых случаях это работает нормально, в других это немного нервно и заканчивается в неправильной позиции / строке в таблице Посмотреть. По какой причине scrollView / tableView неправильно прокручивается?