Индекс не передается из uicollectionviewcell в просмотр контроллера - PullRequest
0 голосов
/ 14 декабря 2018

Мой код ниже не работает и вызывает ошибку во время выполнения.Указание неожиданно найденного nil при развертывании необязательного значения.Я не знаю, что вызывает это.Я не знаю, как исправить дополнительную проблему в этом.Код для cellforitemat также был добавлен.

class antion : UICollectionViewCell {
      @IBOutlet var sam : UILabel!


      var deleagete : DataCollectionProtocoe?
      var index : IndexPath?

     @IBAction func press(){
            deleagete?.passData(indx: (index?.row)!)
     }

    @IBAction func delete(){
           deleagete?.deleteData(indx: (index?.row)!)
    }

 }


extension ViewController : DataCollectionProtocoe {
         func passData(indx: Int) {
              let vc = storyboard?.instantiateViewController(withIdentifier: "DetailVDC") as? DetailVDC
              vc?.name = people[indx].name!
              self.navigationController?.pushViewController(vc!, animated: true)

        }

       func deleteData(indx: Int) {
            people.remove(at: indx)
            cc.reloadData()
       }
}

protocol DataCollectionProtocoe {
         func passData(indx:Int)
         func deleteData(indx:Int)
}

class DetailVDC: UIViewController {
      var name = ""

      @IBOutlet var lbl : UILabel!

     override func viewDidLoad() {   
              lbl.text = name        
     }
}


    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {


     let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! antion








    cell.index = indexPath
    cell.deleagete = self
    return cell
}

1 Ответ

0 голосов
/ 14 декабря 2018

Исходя из того, что я мало что могу понять из вашего кода, похоже, что вы создаете экземпляр UICollectionViewCell, но не устанавливаете никакого значения для свойства делегата ячейки.

При создании экземпляра коллекциипросмотреть ячейку в контроллере, назначить контроллер свойству делегата ячейки следующим образом:

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = antion()
        cell.delegate = self // assuming the controller is the data source of the collection view
}
...