Вы регистрируете корень вашего контроллера представления view
в качестве исходного представления для контекстного просмотра.В результате CGPoint
, который передается в previewingContext (_ viewControllerForLocation:) `, находится в координатном пространстве этого представления.
Когда вы попытаетесь получить соответствующую строку из вашего табличного представления, точка фактически будетбыть смещенным относительно соответствующей точки в табличном представлении frame
на основе относительной позиции табличного представления в корневом представлении.
Это смещение означает, что соответствующая строка не может быть найдена для последней строки в таблице;indexPathForRow(at:)
возвращает nil
, и ваша функция возвращается, ничего не делая.
Вы также можете обнаружить, что, если вы дотронетесь до нижней части ячейки, вы фактически загляните в следующий ряд.
Вы можете перевести CGPoint
во фрейм табличного представления, но проще просто указать свое табличное представление как исходное представление при регистрации для предварительного просмотра:
if (self.traitCollection.forceTouchCapability == .available){
print("-------->", "Force Touch is Available")
registerForPreviewing(with: self, sourceView: self.profileTableView)
}
else{
print("-------->", "Force Touch is NOT Available")
}