【发布时间】:2014-09-12 19:55:58
【问题描述】:
好的,我真的被困在这里了:/在 Apple 的 Collection View Programming Guide for inserting an item 中说有两个步骤:
- 更新数据源对象中的数据。
- 调用集合视图的适当方法来插入或删除部分或项目。
我被第二个卡住了。我希望新项目出现在集合视图的开头。我不知道该为 insertItemsAtIndexPaths: 参数添加什么。我知道它需要一个索引对象数组,但我不知道如何告诉它选择集合的开始作为它的索引值,并且我也很困惑如何告诉它其他任何东西。您可以在我之前的代码 (cellForItemAtIndexPath) 中看到,我在填充集合时正在修改单元格内按钮元素的属性。如果我想在创建时修改新项目,我该怎么做?我非常感谢您对此提供的任何帮助,我觉得我在这里错过了很多东西并且真的碰壁了。
@implementation RepsCollectionViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
NSError *error = nil;
if (![self.fetchedResultsController performFetch:&error]) {
NSLog(@"Error : %@", error);
abort();
}
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma mark - Collection view data source
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
id <NSFetchedResultsSectionInfo> secInfo = [self.fetchedResultsController.sections objectAtIndex:section];
return [secInfo numberOfObjects];
}
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
RepCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];
Rep *rep = [self.fetchedResultsController objectAtIndexPath:indexPath];
cell.repButton.pressed = [rep.completed boolValue];
cell.repButton.indexPath = indexPath;
return cell;
}
#pragma mark - Fetched Results Controller
-(NSFetchedResultsController *)fetchedResultsController {
if (_fetchedResultsController != nil) {
return _fetchedResultsController;
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc]init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Rep" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc]initWithKey:@"dateTimeCreated" ascending:NO];
[fetchRequest setSortDescriptors:[NSArray arrayWithObjects:sortDescriptor, nil]];
_fetchedResultsController = [[NSFetchedResultsController alloc]initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:nil];
_fetchedResultsController.delegate = self;
return _fetchedResultsController;
}
#pragma mark - IBActions
- (IBAction)addRep:(id)sender {
[NSEntityDescription insertNewObjectForEntityForName:@"Rep" inManagedObjectContext:self.managedObjectContext];
[self.collectionView performBatchUpdates:^{
[self.collectionView insertItemsAtIndexPaths:WHAT TO PUT HERE?];
} completion:nil];
}
【问题讨论】:
标签: ios core-data uicollectionview collectionview