ボタン、それはiphoneを押しだとき、私は、ビューコントローラを変更したいです

StackOverflow https://stackoverflow.com/questions/2452044

質問

私は、カスタムセルを持つテーブルビューコントローラを持っています。これらの細胞中でIは、細胞のそれぞれのボタンを追加しました。私は希望それは私がそのボタンを押したときに、それは私がdidSelectRowAtIndexPathから取得ビューの異なるそのセルの詳細については、使用して新しいビューを表示することをです。

私は今難しい質問ですね。私はボタンがinterfacebuilderに何らかのアクションを持っていることを見てきました(多分タッチダウン)が、私はどのようなコードにそれをどのようにリンクします。ここで、iは、そのイベントを処理するコードを宣言する必要がありますか?

私はこれが仕事と願って、応答なしで他のフォーラムに投稿した。

ありがとう。 ジャン

役に立ちましたか?

解決

私はおそらくNSIndexPathのインスタンスを持つことがUIButtonのサブクラスです。それはテーブルビューにある場合その方法は、UITableViewCellの中に個々のUIButtonは、「知る」ことができますので、あなたがボタンを押したとき、あなたは-didSelectRowAtIndexPath:で何に似てNSIndexPathを取り、新しいビューをプッシュいくつかのメソッドを呼び出すことができます代わりに、あなたの他の観点で(多分それを-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