Я сделал простое приложение с UICollectionView
встроенным внутри UITableViewCell
. Но когда приложение запускается, UICollectionViewCell
не получает там назначенного цвета и позже используется повторно.Цвет фона не присвоен и проблема с повторным использованием ячеек
TableViewCell и CollectionViewCell предназначены, соответственно, в их СИБ - CustomTableViewCell.xib
и CustomCollectionViewCell.h
ячейки в той же строке, должны иметь одинаковый цвет, т.е. красного цвета клеток в 1-м ряду TableView, зеленого цвета клеток в 2 строка TableView и т. д.
Мой код ниже
ViewController.h
@interface ViewController:UIViewController <UITableViewDelegate,UITableViewDataSource>
@property (strong, nonatomic) IBOutlet UITableView *userTableView;
@property(strong,nonatomic) NSArray* color;
@end
ViewController.m
- (void)viewDidLoad{
[super viewDidLoad];
_color=[[NSArray alloc] initWithObjects:[UIColor redColor],[UIColor greenColor],[UIColor blueColor],[UIColor purpleColor],[UIColor orangeColor],[UIColor cyanColor],[UIColor lightGrayColor],[UIColor magentaColor], nil];
[_userTableView registerNib:[UINib nibWithNibName:@"CustomTableViewCell" bundle:nil] forCellReuseIdentifier:@"TVCell"];
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return 8;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
CustomTableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:@"TVCell"];
CustomCollectionViewCell *cCell=(CustomCollectionViewCell*)[cell.userCollectionView cellForItemAtIndexPath:indexPath];
cCell.backgroundColor=[_color objectAtIndex:indexPath.row];
return cell;
}
CustomTableViewCell.h
@interface CustomTableViewCell : UITableViewCell <UICollectionViewDelegate, UICollectionViewDataSource>
@property (strong, nonatomic) IBOutlet UICollectionView *userCollectionView;
@end
CustomTableViewCell.m
@implementation CustomTableViewCell
- (void)awakeFromNib {
[super awakeFromNib];
[_userCollectionView registerNib:[UINib nibWithNibName:@"CustomCollectionViewCell" bundle:nil] forCellWithReuseIdentifier:@"CVCell"];
}
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
return 20;
}
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
CustomCollectionViewCell* cell=[collectionView dequeueReusableCellWithReuseIdentifier:@"CVCell" forIndexPath:indexPath];
return cell;
}
Ниже изображение интерфейса после запуска проекта
Как решить эту проблему? Пожалуйста, помогите.
Клетки в той же колонке должны иметь одинаковые цвета. Ячейки красного цвета в 1-м столбце TableView, ячейки зеленого цвета во 2-м столбце TableView и так далее.
Хотите изменить цвет фона colletionviewcell или tableviewcell-х годов? – KKRocks
Цвет фона коллекции CollectionViewCell должен быть изменен. @KKroocks – bhatejaud
, то вам нужно заменить эту строку: cCell.backgroundColor = [_ color objectAtIndex: indexPath.row]; в cellViewItemAtIndexPath коллекции, а не cellViewItemAtIndexPath tableview. – KKRocks