Требование : у меня есть вид таблицы, и когда пользователь сильно нажимает на строку, мне нужно маленькое меню размера (высота: 117, ширина: 159) для всплывающего окна относительно этой строки. Меню содержит 2 варианта: «Добавить усилие» и «Просмотр». При нажатии на любой из этих элементов новый контроллер представления выдвигается.
Вывод, полученный моим кодом : при сильном нажатии строки меню увеличивается, а когда я продолжаю нажимать сильнее Контроллер вида, где я кодировал меню, помещается с черным фоном и маленьким меню в центре. Я хочу, чтобы меню оставалось там, где его размер желателен, фон прозрачен, а местоположение закрыто для выбранной строки, чтобы я мог выполнять действия кнопок этого меню.
Ожидаемый результат:
Ниже мой код:
class POListVC: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
if self.traitCollection.forceTouchCapability == .available {
registerForPreviewing(with: self, sourceView: tableView)
}
}
extension POListVC: UIViewControllerPreviewingDelegate {
func previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? {
if let indexPath = tableView.indexPathForRow(at: location), let cell = tableView.cellForRow(at: indexPath) {
previewingContext.sourceRect = tableView.convert(cell.frame, to: self.tableView)
guard let detailViewController = storyboard?.instantiateViewController(withIdentifier: "POMenuVC") as? POMenuVC else {
return nil
}
detailViewController.preferredContentSize = CGSize(width: 159, height: 117)
return detailViewController
}
return nil
}
func previewingContext(_ previewingContext: UIViewControllerPreviewing, commit viewControllerToCommit: UIViewController) {
show(viewControllerToCommit, sender: self)
}
}
И это как выглядит POMenuV C на раскадровке:
Но результат, который я получаю, когда сильно нажимаю на строку ниже:
И когда я нажимаю сильнее, контроллер вида толкается. Ниже приводится вывод: