我想,当一个按钮,它按下iphone更改视图控制器
-
20-09-2019 - |
题
我有定制单元表视图控制器。在这些细胞中加入我的细胞中的每一个的按钮。我想那就是当我按下该按钮,它显示有关该单元格的详细信息,我从didSelectRowAtIndexPath方法得到的观点不同的新观点。
我知道它现在是一个很难回答的问题。我见过的按钮上InterfaceBuilder的一些行动(触落也许),但我如何将其链接到哪些代码。我应该在哪里声明代码,处理该事件?
我已经张贴在没有回答其他论坛,希望这会工作。
感谢。 吉安
解决方案
我可能会继承UIButton的有NSIndexPath的一个实例。这样,在一个UITableViewCell每一个人的UIButton可以“知道”它是在表视图,所以当你按下按钮,你可以调用一些方法,它的NSIndexPath,并推动一个新的观点,类似于您在-didSelectRowAtIndexPath:
做什么而是与您的其它视图(也许给它像-didPressButtonAtIndexPath:
一个描述方法的名称)。
除了使用Interface Builder来做到这一点,你应该添加一个方法到UIButton的子类本身又调用您的视图控制器上的方法。然后,对于每个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];
}
不隶属于 StackOverflow