我想在按下iphone的按钮时更改视图控制器

时间:2010-03-16 04:04:00

标签: iphone uiview uiviewcontroller ibaction

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

我知道这是一个很难的问题。我已经看到按钮在界面构建器上有一些动作(可能会触及)但是我如何将它链接到什么代码。我应该在哪里声明处理该事件的代码?

我在其他论坛上发布时没有回答,希望这会有用。

感谢。 吉安

1 个答案:

答案 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