いくつかのデータを表示するために UITextField をサブクラス化しています。同じデータソースを使用したい - UITableView のようなデリゲート パターン。
@interface MySubClass : UITextField <UITextFieldDelegate>
@property (nonatomic, unsafe_unretained) id<MyDataSource> myDatasource;
@property (nonatomic, unsafe_unretained) id<MyDelegate> myDelegate;
-(void) loadStuff;
@end
@implementation MySubClass
-(id) initWithFrame:(CGRect)frame {
...
self.delegate = self; // For the UITextField
...
}
-(void) layoutSubviews {
[self doStuff];
}
-(void) loadStuff {
Data * data = [self.myDatasource ...];
NSString * string = // do stuff to the data for display
self.text = string; //Calls layoutSubviews again, infinite loop.
}
@end
データ ソースからデータを取得して表示するために、layoutSubviews を使用することを考えました。問題は、処理したばかりのデータにテキストを設定すると、layoutSubviews の呼び出しが再度トリガーされることです。したがって、無限ループがあります。
実際、とにかくビューを変更すると、layoutSubviews への呼び出しがトリガーされるようです。
UITableView がそのデータソースで行うことを複製することは可能ですか?