プロトタイプセルの使い方を理解するのにも時間がかかりました。プロトタイプ セル内のユーザー インターフェイス要素にアクセスする場合は、UITableViewCell のサブクラスを作成し、それを Interface Builder のプロトタイプ セルに割り当てる必要があります。次に、IBOutlet プロパティを手動で定義する必要があります。
@interface OptionSwitchCell : UITableViewCell
@property (weak, nonatomic) IBOutlet UISwitch* switchControl;
@end
その後、コントロールを押しながら要素からアシスタント ビューのプロパティ定義にドラッグすることで、インターフェイス要素を接続できます。代わりに、IBActions を所有する View Controller 内で定義できます。インターフェイス要素から View Controller ヘッダー ファイルにコントロールを押しながらドラッグして、アクションを作成できます。アクションの実装内で、どのセルがアクションをトリガーしていたかを知りたい場合があります。私はこのようにします:
@implementation SomeTableViewController
- (IBAction)toggleActivity:(id)sender {
OptionSwitchCell* cell = (OptionSwitchCell *)[sender superview].superview;
NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
...
}
@end
対応するセルとインデックス パスを見つけるための別の解決策 (jrturton による):
- (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];
...
}
これは少し風変わりですが、これまでのところより良い解決策は見つかりませんでした。それが役立つことを願っています。