カスタムUITableViewCellにUIButtonがあり、メソッド「done」があります。
ボタンを介してCustomTableViewCellを取得するにはどうすればよいですか?
-(IBAction)done:(id)sender {
(CustmCell((UIButton)sender).viewTheButtonIsOn...).action
}
カスタムUITableViewCellにUIButtonがあり、メソッド「done」があります。
ボタンを介してCustomTableViewCellを取得するにはどうすればよいですか?
-(IBAction)done:(id)sender {
(CustmCell((UIButton)sender).viewTheButtonIsOn...).action
}
CodaFiによる回答で十分である可能性が高いですが、ボタンがテーブルセルに直接追加されていることを前提としています。もう少し複雑ですが、より安全なコードは次のようになります。
-(IBAction)done:(id)sender {
UIView *parent = [sender superview];
while (parent && ![parent isKindOfClass:[CustomCell class]]) {
parent = parent.superview;
}
CustomCell *cell = (CustomCell *)parent;
[cell someAction];
}
サブビューとしてセルに直接追加されている場合は、それを使用-superview
して親ビューを取得できます。また、オブジェクトは値によって取得されることはなく、Objective-Cでのみポイントされるため、ポインターを使用してキャストする必要があります。
-(IBAction)done:(id)sender {
[(CustmCell*)[(UIButton*)sender superview]someAction];
}
もう1つの方法は、CustomCellプロパティを持つUIButtonのサブクラスを作成して、CustomCellオブジェクトに直接アクセスすることです。これは、スーパービューのスーパービューを探すよりも技術的に優れたコードです。
contentViewについても考慮する必要があります。または、ボタンが現在または将来含まれる可能性のあるセルの他のサブビューについても考慮する必要があります。安全を確保し、親階層をトラバースします。
var parent = button.superview
while let v = parent where !v.isKindOfClass(MyCustomCell) {
parent = v.superview
}
// parent is now your MyCustomeCell object