【发布时间】:2014-06-26 14:42:23
【问题描述】:
我遇到了 UITable 的问题。当我使用主 UITableViewController 删除行时它工作正常,它隐藏了。但是现在我遇到了问题,因为我在 UIViewController(MainViewController) 上有 UITableView(_domainTableView)。它工作正常,但是当我想删除行时它不会隐藏它,当我关闭并关闭应用程序时,此行被删除,但我想比以前自动和动画。你有什么解决办法吗?
#import "MainViewController.h"
@interface MainViewController ()
@property (nonatomic, strong) NSFetchedResultsController *fetchedResultsController;
@end
@implementation MainViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
CAGradientLayer *bgLayer = [backgroundGradient blueGradient];
bgLayer.frame = self.view.bounds;
[self.view.layer insertSublayer:bgLayer atIndex:0];
UIImage *image = [UIImage imageNamed: @"logo"];
UIImageView *imageview = [[UIImageView alloc] initWithImage: image];
self.navigationItem.titleView = imageview;
[self.fetchedResultsController performFetch:nil];
_domainTableView.dataSource = self;
_domainTableView.delegate = self;
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return self.fetchedResultsController.sections.count;
}
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{
return UITableViewCellEditingStyleDelete;
}
-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{
Domain *domain = [self.fetchedResultsController objectAtIndexPath:indexPath];
CoreDataStack *coreData = [CoreDataStack defaultStack];
[[coreData managedObjectContext] deleteObject:domain];
[coreData saveContext];
// [self.domainTableView reloadData];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
id <NSFetchedResultsSectionInfo> sectionInfo = [self.fetchedResultsController sections][section];
return [sectionInfo numberOfObjects];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
Domain *domain = [self.fetchedResultsController objectAtIndexPath:indexPath];
cell.textLabel.text = domain.name;
return cell;
}
- (NSFetchRequest *)entryListFetchRequest {
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Domain"];
fetchRequest.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"date" ascending:NO]];
return fetchRequest;
}
- (NSFetchedResultsController *)fetchedResultsController
{
if(_fetchedResultsController != nil)
{
return _fetchedResultsController;
}
CoreDataStack *coreDataStack = [CoreDataStack defaultStack];
NSFetchRequest *fetchRequest = [self entryListFetchRequest];
_fetchedResultsController = [[NSFetchedResultsController alloc]
initWithFetchRequest:fetchRequest managedObjectContext:coreDataStack.managedObjectContext sectionNameKeyPath:nil cacheName:nil];
// _fetchedResultsController.delegate = self;
return _fetchedResultsController;
}
- (void)controllerWillChangeContent:(NSFetchedResultsController *)controller {
[self.domainTableView beginUpdates];
}
- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller {
[self.domainTableView endUpdates];
}
@end
【问题讨论】:
标签: objective-c xcode uitableview uiviewcontroller