我有自定义表格视图单元格并制作了一个自定义类。如何从单元格中获取对表格视图控制器的引用?
我有这个自定义的 tableview 单元类。在这个我有一个与点击事件连接的按钮。在点击时,我得到了很好的事件,但我希望在表格视图控制器上获得一个暂停,这样我就可以在表格视图的顶部显示操作表。
@interface MTPurchasedCartItemCell : UITableViewCell
- (IBAction)onShareTap:(id)sender;
@end
我有自定义表格视图单元格并制作了一个自定义类。如何从单元格中获取对表格视图控制器的引用?
我有这个自定义的 tableview 单元类。在这个我有一个与点击事件连接的按钮。在点击时,我得到了很好的事件,但我希望在表格视图控制器上获得一个暂停,这样我就可以在表格视图的顶部显示操作表。
@interface MTPurchasedCartItemCell : UITableViewCell
- (IBAction)onShareTap:(id)sender;
@end
我这样做的方法是使用块事件处理程序。在您的MTPurchasedCartItemCell
类中,在头文件中添加一个属性,如下所示:
@property (nonatomic, copy) void (^tapHandler)(id sender);
在实现文件中,您可以这样做:
- (IBAction)onShareTap:(id)sender {
if (self.tapHandler) {
tapHandler(sender);
}
}
最后在你的控制器类中,在你的cellForRowAtIndexPath:
:
...
cell.tapHandler = ^(id sender) {
// do something
}
...
您也可以考虑@property
为自定义单元格添加一个公共按钮。
为此,将以下行添加到自定义单元类的头文件中:
@property (weak, nonatomic) IBOutlet UIButton *myButton;
那就是如果您在 Interface Builder 中创建按钮。如果您在代码中创建按钮,则应添加以下行:
@property (nonatomic) UIButton *myButton;
然后,当从表视图控制器初始化或配置单元格时,您现在可以引用myButton
并可以以表视图控制器为目标向其添加操作。
然后,在 action 方法中,您可以从按钮中获取单元格。Objective-C的答案:如何从两个 NSInteger 中生成一个唯一的 NSInteger?解释如何。
我做了一些非常相似的事情,使用按钮事件从自定义单元格获取表引用。
代码:
-(IBAction)onShareTap:(UIButton *)sender { // i've used a button as input..
UIButton *senderButton = (UIButton *)sender;
UITableViewCell *buttonCell = (UITableViewCell *)senderButton.superview.superview.superview;
UITableView* table = (UITableView *)[buttonCell superview];
NSLog(@"Table: %@", table);
}