我遇到以下情况:我的表格单元格上有一个UISwipeGestureRecognizer。在滑动时,两个按钮将其.hidden-status切换为NO
。
这些细胞是定制的。意思是,那些按钮的IBAction在那个控制器中。现在,我希望这些自定义单元格中的UIButton将变量发送回父视图。该父视图是UIViewController(包含UITableView)。
我该怎么做?我已经阅读过协议,但我无法得到一个可靠的例子......或者还有其他想法吗?他们都欢迎:))
答案 0 :(得分:1)
您所遵循的方法可能会导致崩溃或内存泄漏,因为您必须保留uitableview单元格内容的控制器。
然而,协议是一种简单的方法,在创建表视图单元后,您可以将viewcontroller(创建表视图)分配为单元内容视图的所有操作的委托。
在自定义单元格的控制器中,只需调用委托方法,它将由父视图处理。 这可能听起来令人困惑,但它非常简单。将尝试发布示例代码。
@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复制而来。