내가 productItem 구조체의 배열에 의해 채워지는 UICollectionView가, 구조체 청사진이 작동 내가 성공적으로, 그것으로 내 UICollectionView를 채울 수 UICollectionView에서 DetailView로 구조체의 배열을 전달하고 인덱스를 사용하여 한 항목에서 다른 항목으로 이동합니까?
struct ProductoItem {
let id: Int
let name: String
var price: String
var picture: String
var description: String
}
ProductoItem.swift
라는 그 자체가 빠른 파일에 내가 이제이 구조체를 detailView에 전달하여 detailView에이 변수를 생성합니다.var productos = [ProductoItem]()
그리고 prepareForSegue 메소드에 다음 코드를 추가했습니다. 내가 아는 방법을 모르는 무엇
는override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "detalleProducto" {
let controller = segue.destination as! ProductoDetailViewController
controller.productos = productos
}
}
입니다 :
우리가 구조체의 전체 배열을 보내는으로먼저 내가 채울 DetailView에 CollectionView 셀의 인덱스에 저장된 값을 전달하려면 그것은 제품 셀의 데이터를 사용하여 다음 구조체의 다음/이전 색인 값으로 이동하는 다음/이전 제품으로 이동하는 두 개의 단추가 있어야합니다. 어떻게해야합니까?
detailView를 여는 데 "didSelectItemAtIndexPath"를 사용합니까? –
준비에서 yourCollectionView.indexPathForCell (cell)을 누른 셀의 인덱스를 가져온 다음 인덱스가있는 배열에서 데이터를 가져올 수 있습니다. 이 질문을 확인하십시오 .http : //stackoverflow.com/questions/31914213/how-to-make-prepareforsegue-with-uicollectionview – Yan
@RemyCilia 예. 그렇습니다. 구조체 대신 사전의 배열을 사용할 수 있습니다. 이 작업을 수행하여 현재 인덱스 경로를 가져옵니다. currentProduct = arrayOfDictionaries [indexPath.item]하지만 구조체를 사용하여 동일한 시도 할 때 빈 배열을 가져옵니다. 어쨌든 사전 배열을 사용하면 해당 메서드를 수행하는 한 제품의 개체를 가져올 수 있지만 전체 구조체를 가져 와서 선택한 셀의 인덱스 값을 사용하여 detailView를 채 웁니다. 이보기에는 다음/이전 제품으로 이동하기 위해 두 개의 단추가 있으므로 인덱스 변경을 클릭 할 때) –