我将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对其数据源的作用?