7

我有自定义表格视图单元格并制作了一个自定义类。如何从单元格中获取对表格视图控制器的引用?

我有这个自定义的 tableview 单元类。在这个我有一个与点击事件连接的按钮。在点击时,我得到了很好的事件,但我希望在表格视图控制器上获得一个暂停,这样我就可以在表格视图的顶部显示操作表。

@interface MTPurchasedCartItemCell : UITableViewCell

- (IBAction)onShareTap:(id)sender;

@end
4

3 回答 3

4

我这样做的方法是使用块事件处理程序。在您的MTPurchasedCartItemCell类中,在头文件中添加一个属性,如下所示:

@property (nonatomic, copy) void (^tapHandler)(id sender);

在实现文件中,您可以这样做:

- (IBAction)onShareTap:(id)sender {
    if (self.tapHandler) {
        tapHandler(sender);
    }
}

最后在你的控制器类中,在你的cellForRowAtIndexPath:

...
cell.tapHandler = ^(id sender) {
    // do something
}
...
于 2013-08-28T22:48:33.140 回答
2

您也可以考虑@property为自定义单元格添加一个公共按钮。

为此,将以下行添加到自定义单元类的头文件中:

@property (weak, nonatomic) IBOutlet UIButton *myButton;

那就是如果您在 Interface Builder 中创建按钮。如果您在代码中创建按钮,则应添加以下行:

@property (nonatomic) UIButton *myButton;

然后,当从表视图控制器初始化或配置单元格时,您现在可以引用myButton并可以以表视图控制器为目标向其添加操作。

然后,在 action 方法中,您可以从按钮中获取单元格。Objective-C的答案:如何从两个 NSInteger 中生成一个唯一的 NSInteger?解释如何。

于 2013-10-26T15:35:02.493 回答
-1

我做了一些非常相似的事情,使用按钮事件从自定义单元格获取表引用。

代码:

-(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);
}
于 2013-08-28T22:49:02.997 回答