我正在尝试做一些与How to tell when a subView is removed a UIView
非常相似的事情我添加了一个视图(A)作为子视图,这又为自己创建了一个子视图(B)。它想要什么:
当A的子视图B从A中删除时 - >从它的超级视图中删除A.
我已经将UIView子类化并尝试使用- (void)willRemoveSubview:(UIView *)subview
,而{{1}}依次调用superview上的方法来删除此视图。但它不起作用,我认为可能是因为B正在被删除。
以上主题建议使用我已经理解并在我的应用程序中使用的协议,但在这种情况下,我不知道如何使用它来做我想要的,并且无法在Apple Dev资源中找到正确的引用
你能帮我使用协议吗?委托解决这个问题?
由于
答案 0 :(得分:4)
这对我有用:
- (void)willRemoveSubview:(UIView *)subview {
[self removeFromSuperview];
}
但是如果你想使用协议&代表你可以这样做:
<强> CustomView.h 强>
@class CustomView;
@protocol CustomViewDelegate <NSObject>
- (void)customViewIsReadyToRemove:(CustomView *)customView;
@end
@interface CustomView : UIView {
}
@property (nonatomic, assign) IBOutlet id <CustomViewDelegate> delegate;
@end
<强> CustomView.m 强>
@implementation CustomView
@synthesize delegate;
- (void)willRemoveSubview:(UIView *)subview {
[self.delegate customViewIsReadyToRemove:self];
}
@end
<强> ContainerView.h 强>
@interface ContainerView : UIView {
}
@property (nonatomic, retain) IBOutlet UIView *customView;
@end
<强> ContainerView.m 强>
@implementation ContainerView
@synthesize customView;
- (void)dealloc {
self.customView.delegate = nil;
self.customView = nil;
[super dealloc];
}
- (void)customViewIsReadyToRemove:(CustomView *)customView {
[customView removeFromSuperview];
}
@end
此示例使用IBOutlets,因此您可以使用IB连接容器的customView
属性和自定义视图的delegate
属性。