[英]UITableView realtime reloadData issue
我的应用程序是货币计算器。 每当文本字段更改时,ViewController中的TableView都会重新加载数据。 当[[textField text] length] == 0时,应使用初始数据更新tableView。 无法共享整个代码,但看起来像这样。
ViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
array = [Model fromCoreData]; // initial data
}
- (void)textFieldDidChange:(id)textField {
if([[textField text]length] == 0) {
array = [Model fromCodeData]; //!
[tableView reloadData]; // table gets same array that was when textfield length == 1
}else{
array = [Model calculate:array withSum:[textField text]]; //return array with calculated data
[tableView reloadData];
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
//........
//here [cell setBuy:[[array object atIndex:indexPath]buy]] .......... etc.
//......
return cell;
}
问题:当[[textfield text] length] == 0时,表获得的数组与[[textfield text] length] == 1时的数组相同,但不是初始数组(表应从coredata中取回原始数据)。
我使用MagicalRecord处理CoreData。 NSArray包含实体。 CoreData实时没有变化。 也许有人遇到同样的问题? 有没有更合适的方法? 对不起,我的英语不好 :)
这样尝试,您会成功。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
NSString *str= [NSString stringWithFormat:@"%@%@",textField.text,string];
NSLog(@"---%@",str);
if([str length]==0){
array = [Model fromCodeData]; //!
[tableView reloadData];
}
else{
array = [Model calculate:array withSum:[textField text]];
[tableView reloadData];
}
return YES;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.