我有一个带有自定义单元格的表格视图控制器。在这些单元格中,我为每个单元格添加了一个按钮。我想要的是,当我按下该按钮时,它会显示一个新视图,其中包含有关该单元格的更多信息,这与我从 didSelectRowAtIndexPath 获得的视图不同。
我知道现在这是一个难题。我已经看到该按钮在 interfacebuilder 上有一些操作(可能是触地)但是我如何将它链接到什么代码。我应该在哪里声明处理该事件的代码?
我已经在其他论坛上发帖没有答案,希望这会奏效。
谢谢。吉安
我有一个带有自定义单元格的表格视图控制器。在这些单元格中,我为每个单元格添加了一个按钮。我想要的是,当我按下该按钮时,它会显示一个新视图,其中包含有关该单元格的更多信息,这与我从 didSelectRowAtIndexPath 获得的视图不同。
我知道现在这是一个难题。我已经看到该按钮在 interfacebuilder 上有一些操作(可能是触地)但是我如何将它链接到什么代码。我应该在哪里声明处理该事件的代码?
我已经在其他论坛上发帖没有答案,希望这会奏效。
谢谢。吉安
我可能会将 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];
}