簡體   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