i'm facing a problem, i'm using a tableview as sidebar to present certain controller from the app. When trying to preset Adyen checkout for payment getting an error that tells me i cannot use multi presenting, my question is, how can i fix this issue?
I was thinking to dismiss the sidebar after the button for checkout is pressed or to push the side bar and present the other controllers, but with no success or i didn't do it right.
Thank you!
This is the side menu button placed in MainViewController
public func setSideMenuButton()
{
let button = UIButton()
button.frame = CGRect(x: self.view.frame.size.width - 65, y: self.view.frame.size.height - 160, width: 50, height: 50)
button.setImage(#imageLiteral(resourceName: "side_menu_button").withRenderingMode(.alwaysOriginal), for: .normal)
button.addTarget(self, action: #selector(buttonAction), for: .touchUpInside)
self.view.addSubview(button)
}
@objc func buttonAction(sender: UIButton!)
{
pauseEachExistingVideoPlayer()
guard let sideMenuViewController = storyboard?.instantiateViewController(withIdentifier: "SideMenuViewController") as? SideMenuViewController else { return }
sideMenuViewController.modalPresentationStyle = .overCurrentContext
sideMenuViewController.transitioningDelegate = self
present(sideMenuViewController, animated: true)
}
Presenting each index from the tabel
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
switch indexPath.row {
case 0: present( UIStoryboard(name: "Profile", bundle: nil).instantiateViewController(withIdentifier: "UserProfileVC") as UIViewController, animated: true, completion: nil)
case 1: present( UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "SR_VideoLibrary") as UIViewController, animated: true, completion: nil)
case 2: present( UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "SR_Livestream") as UIViewController, animated: true, completion: nil)
case 3: return
case 4: return
case 5: present( UIStoryboard(name: "VideoLibrary", bundle: nil).instantiateViewController(withIdentifier: "ProjectsListVC") as UIViewController, animated: true, completion: nil)
case 6: present( UIStoryboard(name: "Profile", bundle: nil).instantiateViewController(withIdentifier: "GetPremiumVC") as UIViewController, animated: true, completion: nil)
default:
break
}
}
This is how i dismiss the contrainer view and close the sidebar when tapped outside
class SideMenuViewController: UIViewController, UITableViewDelegate
{
@IBOutlet weak var modalView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
if let view = modalView
{
addTapGesture(target: view, action: #selector(dismissController))
}
}
@objc private func dismissController()
{
dismiss(animated: true, completion: nil)
}
}
extension SideMenuViewController {
func addTapGesture(target: UIView, action: Selector, numberOfTaps: Int = 1) {
let tap = UITapGestureRecognizer(target: self, action: action)
tap.numberOfTapsRequired = numberOfTaps
target.isUserInteractionEnabled = true
target.addGestureRecognizer(tap)
}
}