IBAction func conectado correctamente pero no ejecutando

Actualmente estoy haciendo una demo de la aplicación iOS para practicar rápidamente y me he topado con un problema. Acabo de crear una página nueva y solo hay un button en esta página. He vinculado el button a una function IBAction y muestra una connection adecuada.

Te mostraré una captura de pantalla, pero no tengo la reputación suficiente (todos los demás problemas que he tenido podrían haber encontrado una publicación de otra persona).

Incluso muestra el círculo con un punto relleno y, cuando se hace clic, muestra el button correcto. En el inspector de connection muestra en los events enviados una connection entre "Retocar interior" y "UserPage btnProgressClick" (la página de usuario es mi class que extiende UIViewController y es referenceda por este controller de visualización de partículas y btnProgressClick es el nombre de la function IBAction que quiero correr).

Encontré esta publicación e intenté una compilation limpia, pero eso no funcionó. También moví mi button y se actualizó correctamente en el simulador.

El código dentro de btnProgressClick nunca se ejecuta. He puesto un punto de interrupción en la primera línea y no se rompe.

Aquí está el código XML "Main.storyboard" que vincula el button a la function.

<!--User Page--> <scene sceneID="aNb-aX-hZF"> <objects> <viewController storyboardIdentifier="UserPage" id="w2h-zR-Kdu" customClass="UserPage" customModule="GenomeTrackerDemo" customModuleProvider="target" sceneMemberID="viewController"> <layoutGuides> <viewControllerLayoutGuide type="top" id="9dS-Hw-ZYg"/> <viewControllerLayoutGuide type="bottom" id="7PS-pA-lFe"/> </layoutGuides> <view key="view" contentMode="scaleToFill" id="w6A-eT-aKv"> <rect key="frame" x="0.0" y="0.0" width="600" height="600"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <subviews> <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="JGD-xx-tMQ"> <rect key="frame" x="20" y="48" width="46" height="30"/> <state key="normal" title="Button"/> <connections> <action selector="btnProgressClick:" destination="w2h-zR-Kdu" eventType="touchUpInside" id="F1N-QY-fhb"/> </connections> </button> </subviews> <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> </view> </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="Fsq-L4-Are" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> <point key="canvasLocation" x="1043" y="426"/> </scene> 

y aquí está la class UserPage:

 import Foundation import UIKit class UserPage: UIViewController { var thisUser: User = User() override func viewDidLoad() { super.viewDidLoad() } @IBAction func btnProgressClick(sender: UIButton) { let storyboard = UIStoryboard(name: "Main", bundle:nil) let vc: progressPage = storyboard.instantiateViewControllerWithIdentifier("progressPage") as! progressPage UIView.transitionFromView(self.view, toView: vc.view, duration: 0.8, options: UIViewAnimationOptions.TransitionFlipFromRight, completion: nil) } } 

Como dije antes, esta es mi primera pregunta, así que estoy abierto a comentarios sobre cómo fue networkingactado y qué información di.

Me gustaría agregar algo de información sobre cómo se llama a esta página. Se llama después de una llamada Asincrónica a un service web. Una vez que los datos se recuperan con éxito, paso a la página con esta function:

 func afterSuccessfulLogin(thisUser: User){ dispatch_async(dispatch_get_main_queue()){ let storyboard = UIStoryboard(name: "Main", bundle:nil) let vc: UserPage = storyboard.instantiateViewControllerWithIdentifier("UserPage") as! UserPage vc.thisUser = thisUser UIView.setAnimationCurve(.EaseIn) UIView.transitionFromView(self.view, toView: vc.view, duration: 1.2, options: UIViewAnimationOptions.TransitionFlipFromRight, completion: nil) } } 

No estoy seguro de si esto marca la diferencia, pero pensé que tiraría esto allí.

Cualquier ayuda sobre este tema sería muy útil.

¡¡Gracias!!

[Respuesta previa eliminada, debido a información adicional en cuestión]

iOS contiene una jerarquía de vista y una jerarquía de controller de vista. Ambos deben ser consistentes. En el código publicado en la pregunta, solo se maneja la jerarquía de vista. Prueba los siguientes cambios:

  1. Llame a addChildViewController: en self antes de llamar a transitionFromView:toView:duration:options:completion: passing vc .
  2. En el bloque de finalización para la transitionFromView:toView:duration:options:completion: método, didMoveToParentViewController: en vc , pasa a didMoveToParentViewController: self .

     let storyboard = UIStoryboard(name: "Main", bundle:nil) let vc: UserPage = storyboard.instantiateViewControllerWithIdentifier("UserPage") as! UserPage vc.thisUser = thisUser UIView.setAnimationCurve(.EaseIn) self.addChildViewController(vc) UIView.transitionFromView(self.view, toView: vc.view, duration: 1.2, options: UIViewAnimationOptions.TransitionFlipFromRight, completion: { (finished) -> Void in vc.didMoveToParentViewController(self) }) 

También es un poco extraño llamar a transitionFromView:toView:duration:options:completion: y pasar self.view como el parámetro fromView . El parámetro fromView normalmente se elimina y reemplaza con el parámetro toView , que dejaría el controller de vista original en la jerarquía del controller de vista sin una vista real en la jerarquía de vista. Podría ser aconsejable introducir una UIView anidada que está reemplazando en lugar de self.view .