在特定条件下UIButton 无法响应事件!

在项目的某个需求中尝试将一个UIController.view加入到另一个OtherController.view中或者是一个UIView钟当并不设置UIController为OtherController的childController,那么就无法响应UIController中UIButton的事件,这是什么原因?另外有什么办法使其可以响应Button事件。

阅读 3.3k
2 个回答

已知道原因,突然想到会不会因为是生命周期的原因,在某个view方法内add UIViewController.view后controller的生命周期就结束了,所以尝试将UIViewController作为属性持有它,就可以响应Button的事件了。

class ViewController: UIViewController {

//    let controller = CustomViewController()
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let contentView = UIView(frame: CGRect(x: 30, y: 100, width: 300, height: 300))
        contentView.backgroundColor = UIColor.red
        
        let controller = CustomViewController()    // 注释掉这行,改成上面的属性就可以了
        controller.view.backgroundColor = UIColor.yellow
//        self.addChildViewController(controller)
        controller.view.frame = contentView.bounds;
        contentView.addSubview(controller.view)
        
        self.view .addSubview(contentView)
        
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}

因为你的 controller 释放了啊,没有人持有

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题