2016-05-20 10 views
0

Der Benutzer befindet sich derzeit auf einem ViewController, der Modally vorgestellt wurde.Verwenden der UIAlertController-Aktion zum programmgesteuerten Verknüpfen mit dem eingebetteten UIViewController

Ich versuche, eine UIAlertViewController der OK Taste Aktion anschließen zu verbinden programmatisch zu einem UIViewController in einem UINavigationController eingebettet.

Wie so:

enter image description here Dies ist ein Ausschnitt aus meinem entsprechenden Code ist:

func paymentQueue(queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) { 

....// some code 

case .Restored: 

....// some code 
let alert = UIAlertController(title: "Thank You!", message: "You now have FULL ad-free Access", preferredStyle: UIAlertControllerStyle.Alert) 
let OKAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default) { (action:UIAlertAction) in 
// Goto Main Page: 
let storyboard = UIStoryboard(name: "Main", bundle: nil) 
let vc = storyboard.instantiateViewControllerWithIdentifier("MainMainViewController"); 
self.navigationController?.presentViewController(vc, animated: true, completion: nil) 
} 
alert.addAction(OKAction) 
self.presentViewController(alert, animated: true, completion: nil) 

break; 

default: 
break; 
} 

Wesentlichen, wenn der Nutzer einen Kauf wieder her (oder macht einen erfolgreichen), würde ich sie gerne klicken OK, um sie an einen anderen ViewController zu senden - MainMainViewcontroller.

Aber wenn ich auf die Schaltfläche OK klicke, passiert nichts.

Wohin gehe ich falsch?

Vielen Dank im Voraus Art Damen und Herren/Mesdames;)

+0

Ist Ihr modal präsentiert View Controller in einem Navigationscontroller eingebettet? Ist dies nicht der Fall, wird die Eigenschaft "navigationController" in "nil" aufgelöst und nichts passiert über diesen Punkt hinaus. Versuchen Sie, Ihre Präsentationszeile zu self.presentViewController zu bearbeiten (vc, animiert: true, completion: nil) –

+0

Da sich Ihr MainMainViewController in einem UINavigationController befindet, erstellen Sie einen Instant von UINavigationController, und präsentieren Sie diesen. – Amit89

+0

@ Amit89 Perfectamundo! Ja, ich habe versucht, eine programmatische Verbindung zum eingebetteten ViewController herzustellen, als ich mit dem NavigationController eine Verbindung herstellen sollte, die den ViewController hält. Möge dieses Wochenende dich mit Güte überschütten! –

Antwort

1

schreibt auf diese Weise.

func paymentQueue(queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) { 

....// some code 

case .Restored: 

....// some code 
let alert = UIAlertController(title: "Thank You!", message: "You now have FULL ad-free Access", preferredStyle: UIAlertControllerStyle.Alert) 
let OKAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default) { (action:UIAlertAction) in 
// Goto Main Page: 
let storyboard = UIStoryboard(name: "Main", bundle: nil) 
let navVC = storyboard.instantiateViewControllerWithIdentifier("Navigation"); 
self.presentViewController(navVC, animated: true, completion: nil) 
} 
alert.addAction(OKAction) 
self.presentViewController(alert, animated: true, completion: nil) 

break; 

default: 
break; 
} 
+0

Ich freue mich, Ihnen zu helfen !!! Geniesse dein Wochenende. – Amit89