UITableView实时reloadData问题

时间:2013-07-19 05:06:50

标签: ios objective-c uitableview core-data

我的应用是货币计算器。每次文本字段更改时,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时的相同数组,但不是initial(表应从coredata中取回原始数据)。< / p>

我使用MagicalRecord处理CoreData。 NSArray包括实体。 CoreData实时没有变化。 也许,有人遇到同样的问题?还有更合适的方法吗? 抱歉我的英文不好:)

1 个答案:

答案 0 :(得分:0)

尝试这样,你就会成功。

- (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;
}