【发布时间】:2013-03-18 05:17:13
【问题描述】:
我想在另一个UIView 之上显示一个UIView。我想这样做,这样子视图将有自己的UIViewController。这可能吗?
所以我应该可以在子视图中添加一个按钮:
UIButton *closeButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
...
[closeButton addTarget:self action:@selector(closeMe) forControlEvents:UIControlEventTouchUpInside];
closeMe 是子视图的 ViewController 中的一个方法。
在我的测试代码中,当用户点击关闭按钮时,它会因未定义的选择器而崩溃,因为父视图的 ViewController 没有 closeMe 方法。
编辑:
对不起,我提到closeMe 方法只是作为一个例子。对于这个子视图,我还需要支持许多其他方法(例如处理视图旋转),而拥有自己的 ViewController 的子视图的目标是封装。
【问题讨论】:
-
您可以使用 [childview removeFromSupreview] 删除子视图
-
如果你把孩子作为目标而不是
self会发生什么? -
将 addTarget: 参数更改为实现 closeMe 方法的视图控制器
-
OP 更新:找出它崩溃的原因。选择器未定义仅仅是因为子视图控制器是创建它的方法中的局部变量。当方法退出时,子视图控制器被释放,因此选择器失败。将子 viewcontroller 移动到父 viewcontroller 的一个强大的 ivar 使这项工作。
标签: ios objective-c uiview uiviewcontroller