1

在这里,我在想从自定义 UITableViewCell 中触发 segue 时遇到问题。

问题是我已经实现了一个“编辑” UIButton,它将 UITableViewCell 的 NSIndexPath 传递给下一个 ViewController,以便从 Core Data 编辑一些实体。

因此,所有的方法和 IBActions 链接都在 UITableViewClass 内部实现,而不是像往常一样在 UITableViewClass 中实现。通常,我会[self performSegue: withIdentifier:]从 ViewController.m 文件中触发,但这里由于 IBAction 方法是在 UITableViewCell.m 文件中实现的,因此无法访问其 ViewController;这后来变得[self performSegue: withIdentifier:]不可能。

我认为这很常见,但我仍然想不出一个好主意来解决这个问题。你对这个问题有什么策略吗?

4

1 回答 1

1

我通常对这样的小事情使用回调块,因为它比委托更简洁:

@interface MyCell : UITableViewCell
@property (strong, nonatomic) void(^tapHandler)();
- (IBAction)buttonTapped;
@end

#import "MyCell.h"
@implementation MyCell

- (void)buttonTapped
{
    if (self.tapHandler) {
        self.tapHandler();
    }
}

@end

然后在配置单元格时设置点击处理程序:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    MyCell *cell = ...;
    [cell setTapHandler:^{
        //tap handling logic
    }];
}
于 2013-10-06T14:44:14.430 回答