1

いくつかのデータを表示するために 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 がそのデータソースで行うことを複製することは可能ですか?

4

0 に答える 0