0

我正在开发一个包含核心数据的应用程序。用户可以添加类别,然后用户可以将单元格添加到类别中。如果单元格是done,则用户将单元格设置为完成。如果该类别被调用,则视图会检查所有单元格是否为done. 如果所有单元格都在 Core Data 中完成,它会将类别设置为done(带有NSString:@"catisdone")。这一切正常。我用以下代码更改了 CellStyle:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath called");

static NSString *notDoneCellIdentifier = @"NotDoneCatCell";
static NSString *doneCellIdentifier = @"DoneCatCell";

LWCats *currentCat = [self.cat objectAtIndex:indexPath.row];

NSString *cellIdentifier;
if ([currentCat.donecat isEqualToString:@"catisdone"]) {
    cellIdentifier = doneCellIdentifier;
} else {
    cellIdentifier = notDoneCellIdentifier;
}

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];
}

// Configure the cell...

cell.textLabel.text = currentCat.namecat;
cell.detailTextLabel.text = currentCat.rewardcat;

return cell; }

这在大多数情况下都可以正常工作。如果 tableView 中有一个类别,则调用它(当然)。如果我添加一个类别,效果不好,然后我转到该类别并添加一个单元格,将此单元格设置为done,保存并关闭应用程序。如果我再次打开应用程序,类别不会更改为done,当我转到类别并返回时,类别设置为done。我已经尝试了很多事情(包括在 AppDelegate(和)中调用 viewWillAppear(检查是否所有单元格都已完成并设置NSStringdone或))。not donedidFinishLaunchingWithOptionsapplicationWillEnterForegroundapplicationDidBecomeActive

我希望有一个人可以帮助我。

4

1 回答 1

0

我通过设置单元格(使用 if 语句)检查类别来解决问题。

于 2012-12-27T16:10:00.207 回答