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

Posted

技术标签:

【中文标题】如何将单元格的值/字符串内容转换为 nsindexpath【英文标题】:How to convert value / string content of cell to nsindexpath 【发布时间】:2015-10-22 21:49:53 【问题描述】:

我有一个 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;

【问题讨论】:

不是最优雅的答案,但我基本上可以通过一长串 if 语句来检查每个语句的值。我想要一个更好的答案: 【参考方案1】:

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

单元格只存在于屏幕上的项目,当您滚动并从屏幕上删除项目或出现在屏幕上时,单元格会被重新用于新项目。

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

修改单元格的地方是在 UIViewController 方法 cellForItemAtIndexPath 的实现中。

【讨论】:

谢谢。我确实注意到它不起作用并且正在发生!仍在寻找一个好的解决方案。你能解释一下你最后一句话的意思吗?这是我触发代码的地方。您是否为此方法建议的特定代码可行?删除它作为可能的答案。

以上是关于如何将单元格的值/字符串内容转换为 nsindexpath的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Excel 列转换为忽略空白单元格的新范围

在代码页中如何获取FastReport中一个单元格的值

将每个单元格的名称设置为其内容/值

excel中将两个单元格的内容合并

Pandas:将 DataFrame 转换为每个单元格的均值和标准差

JavaScript 技术篇 - js读取Excel文档里的内容实例演示,js如何读取excel指定单元格的内容,js将excel的内容转化为json字符串方法