如何将单元格的值/字符串内容转换为nsindexpath

时间:2015-10-22 21:49:54

标签: ios core-data uicollectionview nsindexpath

我有一个UICollectionView,其中填充了CoreData的内容。当视图加载时,我想预先选择/突出显示一些单元格。

我已经能够使用下面的代码预先选择项目了。突出显示并不像我想的那样无缝地工作,但我可以使它工作。

- (void)preSelect {
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:6 inSection:5];
    [self.collectionView selectItemAtIndexPath:indexPath animated:YES scrollPosition:UICollectionViewScrollPositionNone];
    if ([[self.collectionView cellForItemAtIndexPath:indexPath] isSelected]) {
        [self.collectionView cellForItemAtIndexPath:indexPath].backgroundColor = [UIColor darkGrayColor];
        NSLog(@"selected count %i",[self.collectionView indexPathsForSelectedItems].count);
    }
}

我不想让预选硬编码。我想做点什么:

NSIndexPath = indexPath where [value of cell] isEqual:@"NSString";

或更好

PFQuery *query = [PFQuery queryWithClassName:@"myClass"];
[query findObjectsInBackgroundWithBlock:^(NSArray *object, NSError *error){    NSString *abc = [object valueForKey:@"myKey"];
NSIndexPath = indexPath where cell.text = abc;

1 个答案:

答案 0 :(得分:0)

如果以这种方式使用cellForItemAtIndexPath,那么您的代码将被致命地破坏。

单元格仅存在于屏幕上的项目中,当您滚动并且项目从屏幕上移除或显示在屏幕上时,单元格将重新用于新项目。

如果索引路径不在屏幕上,则UIView方法cellForItemAtIndexPath返回nil。如果您更改单元格的背景颜色,则它会保留其他项目在屏幕上移动时的背景颜色,重复使用您刚刚设置的背景颜色的单元格。调试它时很有趣。

修改单元格的位置在UIViewController方法cellForItemAtIndexPath的实现中。