我正在Objective C中编写一个应用程序。我在集合视图中有自定义单元格。最初,它从SQLite Db加载数据,并在每个自定义单元格的Collection视图中显示它。它在集合视图中显示单元格。
一旦我重新加载集合视图,集合视图就会保持黑色。
代码:
-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
return 3;
}
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
return [self readRowCount:@"SELECT COUNT(label) FROM colour;"];
}
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"%d", [arrColour count]);
CustomViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"ItemCell" forIndexPath:indexPath];
// if (cell == nil) {
// cell = [[CustomViewCell alloc]init];
//}
cell.label.text = [NSString stringWithFormat:@"%@",[ [arrColour objectAtIndex:indexPath.item ]label] ];
CellData *redObj = [arrColour objectAtIndex:indexPath.row];
CellData *greenObj = [arrColour objectAtIndex:indexPath.row];
CellData *blueObj = [arrColour objectAtIndex:indexPath.row];
float redF = [[redObj red] floatValue];
float greenF = [[greenObj green] floatValue];
float blueF = [[blueObj blue] floatValue];
//NSLog(@"Colours: %f-%f-%f", redF, greenF, blueF);
cell.backgroundColor = [UIColor colorWithRed:redF/255.0f green:greenF/255.0f blue:blueF/255.0f alpha:1];
return cell;
}
我重新加载数据的地方 - 按钮:
- (IBAction)btnAdd:(id)sender {
NSString *myRed = [NSString stringWithFormat: @"%1.4f", slideR.value];
NSString *myGreen = [NSString stringWithFormat: @"%1.4f", slideG.value];
NSString *myBlue = [NSString stringWithFormat: @"%1.4f", slideB.value];
if(txtField != nil){
[colMain reloadData];
}
在这种情况下,arrColour(Mutable Array)包含相同数量的元素。集合视图未重新加载的内容是什么?
答案 0 :(得分:1)
您是否有充分的理由直接使用Sqlite而不是使用Core Data,这很好地抽象了大部分低级别持久性复杂性?
无论如何,如果你必须,这就是你现在的方法如何:
NSArray*
属性或实例变量。在-viewDidLoad
(或更高版本)中初始化并填充数组。datasource
实施以使用该数组,例如return [self.colors]
numberOfItemsInSection
方法中的datasource
。-reloadData
。其他一些提示:
- 你确定你真的想在集合视图中有3个部分(“组”项目)吗?如果您确实没有,请完全删除-numberOfSectionsInCollectionView
实施。
- 当您执行arrColors[indexPath.item
时,您将获得相同的对象三次。当然这不是你的意图吗?考虑使用UIColor
作为数组的元素,或将颜色值包装在自定义NSObject
子类中。
希望这能为您提供一些如何开始的建议。
答案 1 :(得分:0)
实际上,我需要做的是为我的自定义对象设置“强大”的属性。那就是我在自定义对象中存储RGB颜色的值。