Я сталкивался с похожими проблемами, но не имел ничего общего с моей текущей настройкой, и поэтому изо всех сил пытался найти решение.
У меня есть пользовательское расширение UIViewController
с двумя функциями, которое программно представляет и отклоняет VC (см. Ниже).
extension UIViewController {
//present VC fromRight
func presentDetail(_ viewControllerToPresent: UIViewController){
//constant to hold animation
let transition = CATransition()
transition.duration = 0.3 //seconds
transition.type = kCATransitionPush
transition.subtype = kCATransitionFromRight
self.view.window?.layer.add(transition, forKey: kCATransition)
present(viewControllerToPresent, animated: false, completion: nil)
}//end func
//dismiss VC fromLeft
func dismissDetail(){
//constant to hold animation
let transition = CATransition()
transition.duration = 0.3 //seconds
transition.type = kCATransitionPush
transition.subtype = kCATransitionFromLeft
self.view.window?.layer.add(transition, forKey: kCATransition)
dismiss(animated: false, completion: nil)
}//end func
}
У меня есть VenueListVC
(основной VC), который имеет UITableView
, моя функция didSelectRowAt
ниже, которая представляет (используя пользовательское расширение выше) VenueDetailsVC
(вторичный VC).
Моя проблема в том, что при выборе ячейки первичный VC (VenueListVC) загружается дважды, прежде чем модально представить вторичный VC (VenueDetailsVC). У меня нет других переходов между этими двумя венчурными капиталистами.
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
guard let venueDetailsVC = storyboard?.instantiateViewController(withIdentifier: "VenueDetailsVC") as? VenueDetailsVC else { return } //create an instance of VenueDetailsVC
presentDetail(venueDetailsVC)//present Group Feed VC using custom extension
}