0

我有一个带有自定义单元格的表格视图控制器。在这些单元格中,我为每个单元格添加了一个按钮。我想要的是,当我按下该按钮时,它会显示一个新视图,其中包含有关该单元格的更多信息,这与我从 didSelectRowAtIndexPath 获得的视图不同。

我知道现在这是一个难题。我已经看到该按钮在 interfacebuilder 上有一些操作(可能是触地)但是我如何将它链接到什么代码。我应该在哪里声明处理该事件的代码?

我已经在其他论坛上发帖没有答案,希望这会奏效。

谢谢。吉安

4

1 回答 1

0

我可能会将 UIButton 子类化为具有 NSIndexPath 的实例。这样, UITableViewCell 中的每个单独的 UIButton 都可以“知道”它在表格视图中的位置,因此当您按下按钮时,您可以调用一些采用 NSIndexPath 并推送新视图的方法,类似于您在其中所做的-didSelectRowAtIndexPath:但用你的其他视图代替(也许给它一个描述性的方法名称,比如-didPressButtonAtIndexPath:)。

您应该向 UIButton 子类本身添加一个方法,而不是使用 Interface Builder 来执行此操作,该方法反过来调用视图控制器上的方法。然后,对于每个 UIButton,您可以使用 UIControl 方法-addTarget:action:forControlEvents:。让 UIButton 调用它自己的方法,该方法调用控制器的方法。您的解决方案可能类似于:

// MyButton.h
@interface MyButton : UIButton {
    NSIndexPath *myIndexPath;
    MyViewController *viewController;
}

- (void)didPressButton;
@end

// MyViewController.h
@interface MyViewController { }
- (void)didPressButtonAtIndexPath:(NSIndexPath *)indexPath;
@end

然后,当您构建单元格时,为您添加调用的每个按钮:

[button addTarget:button 
           action:@selector(didPressButton)
 forControlEvents:UIControlEventTouchDown];

最后,实现-didPressButton如下所示:

- (void)didPressButton {
   [controller didPressButtonAtIndexPath:myIndexPath];
}
于 2010-03-16T04:15:57.280 回答