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

GMH*_*HSJ 1 uibutton uiviewcontroller uiwindow ios swift

在我的应用程序的故事板中有一个UIViewController(子),它加载到另一个UIViewController(父)中.

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

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

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

window?.addSubview(viewController.view); 
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

这是它在旁边父视图中加载子视图控制器的方式

在此输入图像描述

在子视图控制器内部,您可以看到两个按钮.我已将(TouchUpInside)操作添加到子视图的控制器类中的那些按钮,但它无法正常工作.但ViewDidLoad方法工作正常(我添加了一些动画,他们正在工作).

有人能告诉我如何在这些按钮上写动作并让它们工作或让我知道我是否在这里做错了什么.任何帮助将受到高度赞赏.

编辑: 这就是我写IBAction的方式

@IBAction func abc(sender: AnyObject) {    
    print("Worked");
}
Run Code Online (Sandbox Code Playgroud)

Vla*_*r K 7

尝试使用孩子viewController作为财产.在当前实现中viewController,只要方法完成就应该释放对象.viewController按下按钮时,属性将确保对象处于活动状态.

所以代替:

let viewController: UIViewController = storyboard.instantiateViewControllerWithIdentifier("CPBackConfirmMessageUIView");
Run Code Online (Sandbox Code Playgroud)

试试这个:

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); 
 }

}
Run Code Online (Sandbox Code Playgroud)