繁体   English   中英

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

[英]I want to change the view controller when a button it's pressed iphone

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

我知道这是一个难题。 我已经看到该按钮在interfacebuilder上有一些动作(也许按下),但是我如何将其链接到什么代码。 我应该在哪里声明处理该事件的代码?

我已经在其他论坛上张贴了没有答案,希望这可以工作。

谢谢。 ian

我可能会子类化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 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM