プロトタイプのセルの使い方を理解するのにもしばらく時間がかかりました。プロトタイプセル内のユーザーインターフェイス要素にアクセスするには、UITableViewCellのサブクラスを作成し、それをInterface Builderのプロトタイプセルに割り当てる必要があります。 次に、あなたがコントロールドラッグアシスタントビューのプロパティ定義に素子からのインターフェイス要素を接続することができ、手動例えばIBOutletプロパティを定義する:その後
@interface OptionSwitchCell : UITableViewCell
@property (weak, nonatomic) IBOutlet UISwitch* switchControl;
@end
有します。 代わりにIBActionsを所有しているView Controller内で定義することができます。インターフェイス要素からView Controllerヘッダーファイルにドラッグ&ドロップしてアクションを作成できます。アクション実装の中で、どのセルがアクションを引き起こしているのかを知りたいと思うでしょう。対応するセルおよびインデックスパスを(jrturtonによって)発見するための
@implementation SomeTableViewController
- (IBAction)toggleActivity:(id)sender {
OptionSwitchCell* cell = (OptionSwitchCell *)[sender superview].superview;
NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
...
}
@end
別の解決策:
- (IBAction)toggleActivity:(id)sender {
CGPoint hitPoint = [sender convertPoint:CGPointZero toView:self.tableView];
NSIndexPath *hitIndex = [self.tableView indexPathForRowAtPoint:hitPoint];
OptionSwitchCell* cell = (OptionSwitchCell *)[self.tableView cellForRowAtIndexPath:hitIndex];
...
}
これは少し風変わりですが、私はよりよい解決策を見つけていない私はこのようにそれを行いますこれまでのところ。希望が役立ちます。
数分前、私はこのビデオ(およびその2番目の部分)を見つけました:http://youtu.be/0AsChJk422c多かれ少なかれ説明したが、彼/彼女はデリゲートを使用します。同じ原理ですが、もう少しきれいに見えます。ご回答有難うございます ! – Marcal
これは確かにクリーンなソリューションです。ポインタありがとう。すべてのプロトコルのための定型コードのビットですが。 – Sbhklr
コントロールの行を見つけるより良い方法は私の答えはここにあります:http://stackoverflow.com/questions/9274494/how-to-know-the-uitableview-row-number/9274863#9274863 – jrturton