0

この質問に対する答えを探しましたが、見つけた答えは機能しません。

プロパティを追加した UIView のサブクラスであるビューがあります。このビューによって作成されたサブビューからこのプロパティにアクセスしたいと思います。それは可能ですか?

self.superview.propertyname を参照しようとしましたが、タイプ UIView のオブジェクトにプロパティ名が見つからないというエラーが表示されます。そうですね。UIView のサブクラスであるため、UIView であることは認識していますが、追加した追加のプロパティについて知るにはどうすればよいでしょうか?

4

1 に答える 1

2

いくつかのオプションがありますが、そのうちの 2 つは次のとおりです。

1.キャスティング:

@implementation SubviewView
- (void)blah
{
  ((CustomView *)self.superview).property = ...`
}
@end

2. 代表者:

@protocol SubviewViewDelegate
- (void)customView:(SubView *)sv modified:(...)value;
@end

@class SubView
@property (nonatomic, weak) id <CustomViewDelegate> delegate;
@end

@implementation SubviewView
- (void)blah
{
  [self.delegate subView modified:...];
}
@end

@implementation CustomView
- (void)subView:(SubView *)sv modified:(...)value
{
  self.property = value;
}
@end

2 番目のオプションはより多くのコードですが、多くの場合、より適していると思います。デリゲートを使用すると結合が減り、デメテルの法則とうまく機能します。詳細については、このドキュメントを参照してください。

于 2012-06-23T03:00:35.987 に答える