按钮点击事件(UIButton TouchUpInside动作)不工作 - IOS/Swift

问题描述:

在我的应用程序的故事板中有一个UIViewController(child),它加载到另一个UIViewController(父级)中。按钮点击事件(UIButton TouchUpInside动作)不工作 - IOS/Swift

这是我在父视图控制器内部使用的代码,用于将子视图控制器加载到包含导航栏的父视图控制器中的所有子视图中。

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

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

window?.addSubview(viewController.view); 

这是他们在我的故事板怎么看

enter image description here

这是它的外观子视图控制器在侧父视图

enter image description here

装里面的后子视图控制器有两个按钮,你可以看到。我已经添加(TouchUpInside)动作子视图的控制器类中的e按钮,它不起作用。但ViewDidLoad方法工作正常(我添加了一些动画,他们正在工作)。

有人能告诉我如何写这些按钮的行为,让他们工作或让我知道如果我在这里做任何错误的事情。任何帮助将不胜感激。

编辑: 这是我写我的IBAction为

@IBAction func abc(sender: AnyObject) {  
    print("Worked"); 
} 
+0

你叫'addChildViewController'方法? – Khuong

+0

不可以。我怎样才能用我的场景? – GMHSJ

+0

试试这个窗口?.bringSubviewToFront(viewController.view) – Kalpesh

尽量用孩子viewController作为属性。在当前的实现中viewController对象应该在方法完成后立即释放。物业将确保viewController对象将在您按下按钮时处于活动状态。

所以不是:

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

} 
+0

“使用子视图控制器作为属性”是什么意思?对不起,我没有得到。 – GMHSJ

+0

已更新答案 –

+0

你是天才。有效。谢啦。 – GMHSJ