子视图中的 UIButton 调用父级中的方法

UIButton in subview called to method in Parent

我正在使用通用 links。 所以,当 Universal link 单击应用程序时,我正在从 AppDelegate 加载 ViewController:

ConViewController *con = [[UIStoryboard storyboardWithName:@"Main"
 bundle:nil] instantiateViewControllerWithIdentifier:@"ControllerName"];

[[[UIApplication sharedApplication] keyWindow] addSubview:con.view];

在这个 ("con") 视图控制器中,我有带 NIB 的 UIView:

UIView *NibView = [[[NSBundle mainBundle] loadNibNamed:@"NibName"
 owner:self options:nil] lastObject];

[_PageView addSubview:SingleView];



-------
| con |
|     |
|-----|
||Nib||
||   ||
|-----|
-------

问题: 在 NibView 中我有 UIButton。 按钮动作的实现位于 "ConViewController"。 但是只有当我将实现放在 AppDelegate(父级)中时才会调用 Action。

为什么会这样? 我该如何改变它? 谢谢!

当您将 ViewController 作为子视图添加到 Window 时,您没有将视图控制器设置为根视图控制器,或者您没有推送到视图控制器(详细来说,您是仅在 window) 上添加视图控制器的视图,您的视图控制器不在内存中,因此您在视图控制器中创建的每个操作都不起作用,我们有一个基于堆栈的方法(即视图控制器堆栈)和您的 viewController 不在堆栈上或内存中,因此如果您创建 appdelegate 的按钮操作,它会起作用。