передача данных из одной ячейки collectionView в другой контроллер представления коллекции в swift 4 путем отправки «ID» в качестве параметра - PullRequest
0 голосов
/ 11 февраля 2019

У меня есть запрос, касающийся представления коллекции в Swift 4.

У меня есть представление коллекции с именем Category-Collection-View-Controller.В этом у каждой Категории есть уникальный идентификатор, который прибывает из серверной части.Когда я нажимаю на определенную категорию, она переходит к другому представлению коллекции, которое называется SubCategories-CollectionView-Controller.и отобразить всю информацию «Category-Collection-View-Controller».Пожалуйста, кто-нибудь, объясните мне, как я передаю "ID", который исходит из бэкэнда, в качестве параметра в функции Alamofire.

Ответы [ 3 ]

0 голосов
/ 11 февраля 2019
    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {

        let id = dataArray[indexPath.item]
        let vc = self.storyboard?.instantiateViewController(withIdentifier: "SubCategories-CollectionView-Controller") as! SubCategories-CollectionView-Controller
        vc.id = id
        self.navigationController?.pushViewController(vc, animated: false)
}

Здесь dataArray - это ваш массив данных, через который вы отображаете данные в Category-Collection-View-Controller.Теперь, когда вы нажмете на него пользователем, вы можете получить данные методом didselectitem и передать их следующему контроллеру.

0 голосов
/ 11 февраля 2019

Объявите идентификатор в CategoryCollectionViewController и извлеките данные подкатегории, используя этот идентификатор.

class CategoryCollectionViewController: UIViewController {
    var id : Int?

     override func viewDidLoad() {
         Almofire.FetchSubcategory(catid:id) {  catgorydata in
              subcategoryCollectionView.reloadData()
         }
     }
}

в вашем контроллере CategoryCollectionView передайте идентификатор категории из методов CollectionView didselect

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
        let categoryID = categoryArray[indexPath.row]
        let subcategorycontroller = SubCategoryController()
        subcategorycontroller.id = categoryID
        self.present(subcategorycontroller, animated: false, completion: nil)

    }
0 голосов
/ 11 февраля 2019

Вы можете передавать данные из одного контроллера представления в другой следующими способами:

  • Делегаты
  • Segue
  • Уведомление

Я предлагаю вам использовать segue, поскольку вы, должно быть, выполнили действие segue при нажатии на категорию.

Пример кодирования:

  func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {

   // You can use a traditional push view controller method.
   //let id = dataSourceArray[indexPath.item]
   //let vc = self.storyboard?.instantiateViewController(withIdentifier: "SubCategories-CollectionView-Controller"") as! SubCategories-CollectionView-Controller
   //vc.id = id
   // self.navigationController?.pushViewController(vc, animated: false)

        // Get the category id and pass it through segue 
        performSegue(withIdentifier: "identifier", sender: id)
    }

и в методе prepare for segue вы можете просто передать этот идентификаторк следующему контроллеру представления.

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "identifier" {
        let senderID = sender as? Int
        let vc = segue.destination as? SubCategories-CollectionView-Controller
        vc.id = senderID
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...