2015-10-26 2 views
1

Ну это так странно. Я также стесняюсь опубликовать этот вопрос, но у меня нет никакого решения, поэтому я решил опубликовать его. Здесь я иду.UILabel Скрытый текст вопроса

У меня есть XIB, я подклассифицировал его в UICollectionView. Это мой код в didSelectMethod:

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { 

CollectionViewCell *cell = (CollectionViewCell*)[collectionView cellForItemAtIndexPath:indexPath]; 

cell.nameLabel.textColor = [UIColor colorWithRed:255.0/255.0 green:255.0/255.0 blue:255.0/255.0 alpha:0.8]; 

[cell setSelected:NO]; 

cell.nameLabel.hidden = NO; 
cell.nameLabel.text = @"HHHHHHH"; 
cell.nameLabel.backgroundColor = [UIColor redColor]; 

} 

Теперь, когда я запускаю свой код, я получаю правильный вывод. Но когда я выбираю любой cell, тогда текст моего UILabel скрыт. Я могу видеть только цвет background.

Когда я выбираю другой, я возвращаю текст ранее выбранного UILabel.

Я еще не написал никакого другого кода, который я не смог понять.

Когда я выбираю любую ячейку:

enter image description here

Когда я выбираю другую ячейку:

enter image description here

Когда я выбираю Предыдущая Cell:

enter image description here

Вот мой код для создания клеток:

- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath { 

// Get reusable cell reference 
CollectionViewCell *cell = (CollectionViewCell *)[cv dequeueReusableCellWithReuseIdentifier:@"CollectionViewCell" forIndexPath:indexPath]; 



[cell updateText]; 




return cell; 
} 

Этот метод в пользовательском классе

- (void) updateText{ 


self.nameLabel.text = name; 

} 

ответ

0

Это высокая, вероятно, потому, что ваш CollectionViewCell является многоразовой клеток. Вы используете hidden для других ячеек. Вы должны установить его в свой метод cellForIndexPath.

- (void)updateText 
{ 
    self.nameLabel.text = name; 
    cell.nameLabel.hidden = YES; // set here it's default value 
} 
+0

я не получаю вашу точку – NSUser

+0

вы implemet '- (UICollectionViewCell *) CollectionView: (UICollectionView *) CollectionView cellForItemAtIndexPath: (NSIndexPath *) indexPath'? – katleta3000

+0

yes Я внедрил его @ katleta3000 – NSUser

1

Захват выбранного индекса в didSelectItemAtIndexPath и перезагружать вам представление коллекции. В cellForIndexPath проверьте свой выбранный индекс и сделайте там материал. Есть некоторые вещи, как показано ниже

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{ 
    if (selectedIndex == indexPath.row) { 
     cell.nameLabel.textColor = [UIColor colorWithRed:255.0/255.0 green:255.0/255.0 blue:255.0/255.0 alpha:0.8]; 

     [cell setSelected:NO]; 

     cell.nameLabel.hidden = NO; 
     cell.nameLabel.text = @"HHHHHHH"; 
     cell.nameLabel.backgroundColor = [UIColor redColor]; 
    } 
} 

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { 
     selectedIndex = indexPath.row; 
     [collectionView reloadData]; 
} 
+0

@Bamsworld Отредактировано. Спасибо – Vijay

+0

Я столкнулся с такой же проблемой, просто написав reloadData в файле didSelectItemAtIndexpath, чтобы решить проблему, но я не хочу делать reloadData для каждого выбора. Я беру контроль над Storyboard, не создавая его вручную, есть ли другой способ, с помощью которого я могу решить эту проблему. пожалуйста помоги –

0

Создание массива Bool для каждой ячейки, а затем обновить значения, когда любая клетка выбрана в didSelectItemAtIndexPath то есть. Также внутри cellForItemAtIndexPath вы можете перейти к цитированию Vijay, за исключением того, что только принимая во внимание только одну выбранную ячейку, вы можете обрабатывать несколько выбранных ячеек.

0

Настоящая проблема заключается в том, что вы должны установить выделенный цвет ярлыка, чтобы очистить цвет в xib неосознанно. Проверьте свой наконечник и измените . Выделите свойство желаемому цвету. Когда ячейка выбрана, subviews изменяет свой цвет на выделенный цвет, установленный в xib. Надеюсь, что это поможет вам. enter image description here

2

Перейдите в свой файл nib/xib и проверьте выделенную цветовую погоду, это ясно или какой-либо другой цвет. Если это ясно, чем изменение в соответствии с вашим требованием.

enter image description here

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