2017-02-01 7 views
0

Я сделал простое приложение с 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; 
} 

Ниже изображение интерфейса после запуска проекта

enter image description here

Как решить эту проблему? Пожалуйста, помогите.

Клетки в той же колонке должны иметь одинаковые цвета. Ячейки красного цвета в 1-м столбце TableView, ячейки зеленого цвета во 2-м столбце TableView и так далее.

+0

Хотите изменить цвет фона colletionviewcell или tableviewcell-х годов? – KKRocks

+0

Цвет фона коллекции CollectionViewCell должен быть изменен. @KKroocks – bhatejaud

+1

, то вам нужно заменить эту строку: cCell.backgroundColor = [_ color objectAtIndex: indexPath.row]; в cellViewItemAtIndexPath коллекции, а не cellViewItemAtIndexPath tableview. – KKRocks

ответ

0

В вашем методе UITableViewDelegatecellForRow зарегистрировать collectionViewCell и настроить его delegate и datasource затем в UICollectionViewDelegate методе cellForItemAtIndexPath установить фон вашего CollectionView Cell. Это будет лучше и проще в управлении, если вы назначите делегата collectionView в своем контроллере.

Надеюсь, это поможет.

0

Дайте мне свой Email-идентификатор Я пошлю вам демо-версию об этом.

Мой выход ниже

enter image description here

+0

[email protected] – bhatejaud

 Смежные вопросы

  • Нет связанных вопросов^_^