我有定制单元表视图控制器。在这些细胞中加入我的细胞中的每一个的按钮。我想那就是当我按下该按钮,它显示有关该单元格的详细信息,我从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];
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top