[英]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.