我有一个带有自定义单元格的表格视图控制器。在那些单元格中,我为每个单元格添加了一个按钮。我想要的是,当我按下该按钮时,它会显示一个新视图,其中包含有关该单元格的更多信息,以及我从didSelectRowAtIndexPath获取的不同视图。
我知道这是一个很难的问题。我已经看到按钮在界面构建器上有一些动作(可能会触及)但是我如何将它链接到什么代码。我应该在哪里声明处理该事件的代码?
我在其他论坛上发布时没有回答,希望这会有用。
感谢。 吉安
答案 0 :(得分:0)
我可能会将UIButton子类化为具有NSIndexPath的实例。这样,UITableViewCell中的每个单独UIButton都可以“知道”它在表视图中的位置,因此当您按下按钮时,可以调用一些采用NSIndexPath并推送新视图的方法,类似于您在{ {1}}但是改为使用其他视图(可能会给它一个描述性的方法名称,如-didSelectRowAtIndexPath:
)。
您应该向UIButton子类本身添加一个方法,而不是使用Interface Builder来执行此操作,而UIButton子类又会在视图控制器上调用方法。然后,对于每个UIButton,您可以使用UIControl方法-didPressButtonAtIndexPath:
。让UIButton调用自己的方法,该方法调用控制器的方法。您的解决方案可能类似于:
-addTarget:action:forControlEvents:
然后,当您构建单元格时,为每个按钮添加调用:
// 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