我遇到了以下情况:我的表格单元格上挂接了UISwipeGestureRecognizer。在滑动时,两个按钮的隐藏状态切换为NO
。将值返回父视图
这些细胞是定制的。意思是,这些按钮的IBAction在该控制器中。现在我想让这些自定义单元格中的UIButton将变量发送回父视图。该父视图是UIViewController(包含UITableView)。
我该怎么做?我已阅读过有关协议,但我无法得到一个坚实的例子...或者还有其他想法吗?他们都欢迎:)
我遇到了以下情况:我的表格单元格上挂接了UISwipeGestureRecognizer。在滑动时,两个按钮的隐藏状态切换为NO
。将值返回父视图
这些细胞是定制的。意思是,这些按钮的IBAction在该控制器中。现在我想让这些自定义单元格中的UIButton将变量发送回父视图。该父视图是UIViewController(包含UITableView)。
我该怎么做?我已阅读过有关协议,但我无法得到一个坚实的例子...或者还有其他想法吗?他们都欢迎:)
您所遵循的方法可能会导致崩溃或内存泄漏,因为您必须保留您的uitableview单元格内容的控制器。
但是协议是一种简单的方法,在创建表格视图单元格后,您可以将视图控制器(它创建表格视图)分配给单元格内容视图的所有操作的委托。
在您的自定义单元格的控制器中,只需调用委托方法,它将由您的父视图处理。这听起来可能令人困惑,但它非常简单。将尝试发布示例代码。
@protocol yourDelegate;
@interface yourViewController{
id<yourDelegate> delegate;
}
@property (nonatomic,assign) id<yourDelegate> delegate;
@end
@protocol yourDelegate
- (void)passThisActionToMainController;
- (void)passThisEventToMainController;
@end
一旦你在你的表格视图单元格视图控制器与上面做了,在你的主控制器,当用户创建和您的视图控制器的实例,然后
controller.delegate = self;
在您单元的视图控制器水龙头或执行任何动作,然后调用
[delegate passThisActionToMainController];
或
[delegate passThisEventToMainController];
这样你的主控制器就可以获得事件并且可以处理它。
替代方法是在创建单元格和处理事件时创建按钮。我会推荐这种方法。
[myButton addTarget:self action:@selector(whatMyButtonShouldDo:)
forControlEvents:UIControlEventTouchUpInside];
上述行复制自答案here。
如果您可以控制视图层次结构,那么'superview'属性可能会有所帮助。 – 2011-05-02 12:16:42