iOS - 带数据源的UITextField子类:何时/何地调用数据源方法?

时间:2012-05-31 12:33:36

标签: ios uitableview delegates datasource

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

0 个答案:

没有答案