3

В виде таблицы мы можем легко поставить галочку на ячейках.Как показать галочку отметки в виде коллекции (изображения)

Но в коллекции вид, как мы можем поставить галочку, когда мы выберем ячейку (изображение)?

Я просто просмотрел изображение внутри ячейки и изображения и поместил изображение метки. Мой код ниже.

Но это не работает.

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) 
{ 

    // handle tap events 
    let cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as! customCollectionViewCell 


    if(cell.checkMarkImage.hidden == true) 
    { 
     print("Hidden") 
     cell.checkMarkImage.hidden = false 

    } 
    else 
    { 
     cell.checkMarkImage.hidden = true 
     print("No Hidden") 
    } 
} 
+0

http://stackoverflow.com/questions/18977527/how-do-i-display-the-standard-checkmark-on-a-uicollectionviewcell – Ujjwal

+1

Короткий ответ: вы не можете создать свою собственную ячейку или попытаться найти ячейка третьей стороны где-то в Интернете –

+0

Ok Спасибо @ sken3r.MI – kishor

ответ

0

@Kishor, paintcode - это инструмент третьей стороны, через который вы можете это сделать. Я также предоставил ссылку. поскольку по умолчанию у вас нет этого средства, вы должны сделать свое обычное поведение, чтобы добиться этого. Благодарю.

+0

Но как мы можем поместить его в сетку? Мы создаем только отметьте отметку справа? Спасибо – kishor

1

Я вижу две основные проблемы, связанные с этим кодом:

  1. Вы используете dequeueReusableCellWithReuseIdentifier метод, который получает другую ячейку из кэша просмотра коллекции, а не один на экране. Используйте cellForItemAtIndexPath метод сбора зрения вместо.
  2. Вы пытаетесь сохранить состояние ячейки (выбрано/не выбрано) в самой ячейке. Это обычная ошибка при работе с UITableView/UICollectionView, и этот подход не будет работать. Вместо этого сохраните состояние в другом месте (например, в словаре) и восстановить это каждый раз, когда просмотр коллекции вызывает ваш источник данных cellForItemAtIndexPath метод.
+0

Да, я попробую. Так что я должен использовать метод cellForItemAtIndexPath? Спасибо – kishor

3

// Делегат метод cellForItemAtIndexPath

func collectionView(collectionView: UICollectionView, 
cellForItemAtIndexPath indexPath: NSIndexPath) -> 
UICollectionViewCell 
{ 
    //Get a reference to our storyboard cell 
    let cell = collectionView.dequeueReusableCellWithReuseIdentifier(
                  "pickSomecell", 
        forIndexPath: indexPath) as! pickSomeGridViewController 

    //Show Images in grid view 
    cell.cellImage.image = self.arrAllOriginalImages[indexPath.row] 
                  as? UIImage   

    //Check Mark toggle. 
    cell.toggleSelected()  

    //return cell. 
    return cell 
} 

И pickSomeGridViewController показать CheckMark изображение, выбранное или нет.

class pickSomeGridViewController: UICollectionViewCell{ 
//Outlet of cell image. 
@IBOutlet var cellImage: UIImageView! 

//Outlet of checkMark image. 
@IBOutlet var cellCheckMarkImage: UIImageView! 

//Function for select and deselect checkmark. 
    func toggleSelected() 
    { 
    //If image is selected. 
    if (selected) 
    { 
      //Show check mark image. 
      self.cellCheckMarkImage.hidden = false   
    } 

    else 
    { 
      //Hide check mark image. 
      self.cellCheckMarkImage.hidden = true    
    } 
    } 
} 
1

вар arrData = NSMutableArray() // 1.Make ModalClass.swift и NSArray с модальными объектами класса, как этот

class CustomModal: NSObject { 
     //Declare bool variable for select and deselect login 
     var is_selected = Bool() 
     //you can declare other variable also 
     var id = Int32() 

} 




// 2. custom array with modal objects 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     let arrTemp = NSArray() 
     arrTemp = [1,2,3,4,5,6,7,8,9,10] 
     for i in 0 ..< arrTemp.count{ 
      let eventModal = CustomModal() 
      eventModal.is_selected = false 
      eventModal.id = arrTemp[i] 
      arrData.add(eventModal) 
     } 
     tblView.reloadData() 

    } 

// 2. Использовать вид коллекции метод делегата

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { 
    let modal = arrData[indexPath.row] as! CustomModal() 
    modal.is_selected = true 
    self.arrData.replaceObject(at: indexPath.row, with: modal) 

    tblView.reloadData() 
} 

func collectionView(_ collectionView: UICollectionView, didDeselectItemAt indexPath: IndexPath) { 
    let modal = arrData[indexPath.row] as! CustomModal() 
    modal.is_selected = false 
    self.arrData.replaceObject(at: indexPath.row, with: modal) 

    tblView.reloadData() 
} 

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! YourCellClass 
    let modal = arrData[indexPath.row] as! CustomModal 
    if modal.is_selected == true{ 
     cell.imgView.image = UIImage(named:"selected_image") 
    }else{ 
     cell.imgView.image = UIImage(named:"deselected_image") 
    } 
} 

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

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