Ich versuche, zu einem anderen Controller zu segeln, indem Sie auf eine der vorgestellten Optionen auf dem Aktionsblatt klicken. Es funktioniert gut auf iPhone-Bildschirmen und es wird zu geeigneten Szenen geschoben, jedoch tritt das Problem auf dem iPad auf. Ich habe viel nach einem ähnlichen Problem gesucht, aber ohne Erfolg.Controller wird zweimal auf dem iPad-Bildschirm gedrückt
@IBAction func actionSheet(_ sender: UIButton) {
let alert = UIAlertController(title: "Please select one of the options", message: nil, preferredStyle: .actionSheet)
let cancelActionButton = UIAlertAction(title: "Cancel", style: .cancel) { action -> Void in }
let recipeActionButton = UIAlertAction(title: "Get The Recipe", style: .default) { action in self.performSegue(withIdentifier: "GetRecipeID", sender: self) }
let facebookActionButton = UIAlertAction(title: "Login with Facebook", style: .default) { action in self.handleCustomFacebookLogin() }
//actions
alert.addAction(cancelActionButton)
alert.addAction(recipeActionButton)
alert.addAction(facebookActionButton)
// support ipad
if let popoverController = alert.popoverPresentationController {
popoverController.sourceView = sender
popoverController.sourceRect = sender.bounds
}
self.present(alert, animated: true, completion: nil)
}
Dieser Ansatz funktioniert auch nicht:
let viewController = UIStoryboard(name: "Detail", bundle: nil).instantiateViewController(withIdentifier: "DetailsVC") as! DetailsViewController
let recipeActionButton = UIAlertAction(title: "Get The Recipe", style: .default, handler: { action in
self.navigationController?.pushViewController(viewcontroller, animated: true)})
ich diese Warnung in der Konsole immer bin, wenn sie von iPhone schieben:
pushViewController:animated: called on <UINavigationController
0x7fd96a81f800> while an existing transition or presentation is
occurring; the navigation stack will not be updated.
Dies zeigt nicht, wenn ich Auslöser Aktion vom iPad, aber neue Controller ist an der Spitze gestapelt. FirstController, SecondController nach dem Klicken auf getRecipe/Login-Schaltfläche vom vorherigen Bildschirm.
Muss ich diese innerhalb Aktion Anruf setzen? – Vuko
Ja gleiche Position wie vor – Retterdesdialogs
{Aktion in OperationQueue.main.addOperation { self.performSegue (withIdentifier: "GetRecipeID", Absender: null)}} Dies ist nicht etwas leider zu ändern. – Vuko