按钮单击事件(UIButton TouchUpInside 操作)不起作用 - IOS/Swift

Button click event (UIButton TouchUpInside action) not working - IOS/Swift

在我的应用程序的情节提要中,有一个 UIViewController(child) 加载到另一个 UIViewController(parent) 中。

这是我在父视图控制器中使用的代码,用于在父视图控制器中的所有子视图(包括导航栏)上加载子视图控制器。

let window: UIView? = UIApplication.sharedApplication().keyWindow;

let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil);
let viewController: UIViewController = storyboard.instantiateViewControllerWithIdentifier("CPBackConfirmMessageUIView");

window?.addSubview(viewController.view); 

这是他们在我的故事板中的样子

这是在父视图中加载子视图控制器后的样子

在子视图控制器内有两个按钮,您可以see.I 已向子视图控制器内的那些按钮添加 (TouchUpInside) 操作 class 但它不起作用。但是 ViewDidLoad 方法工作正常(我添加了一些动画并且它们工作正常)。

有人可以告诉我如何为这些按钮编写操作并让它们工作,或者让我知道我在这里做错了什么。任何帮助将不胜感激。

编辑: 这就是我编写 IBAction

的方式
@IBAction func abc(sender: AnyObject) {    
    print("Worked");
}

尝试使用 child viewController 作为 属性。在当前的实现中,viewController object 应该在方法完成后立即释放。 属性 将确保 viewController object 会在您按下按钮时激活。

所以代替:

let viewController: UIViewController = storyboard.instantiateViewControllerWithIdentifier("CPBackConfirmMessageUIView");

试试这个:

class YourParentViewController: UIViewController {

    var viewController: UIViewController!

 func someMethod() {
    let window: UIView? = UIApplication.sharedApplication().keyWindow;

    let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil);
    viewController = storyboard.instantiateViewControllerWithIdentifier("CPBackConfirmMessageUIView");

    window?.addSubview(viewController.view); 
 }

}