'a iletiyorum Swift'de yeni başlıyorum.Verileri CollectionView Delegesi'nden başka bir ViewController
benim UIViewController
içinde CollectionView
varsa ve kullanıcı başka ViewController
için CollectionViewCell
tıkladığında burada veri geçmeleri gerekiyor. prepareForSegue
'u geçersiz kılmayı denedim ancak ilk önce aradığını ve didSelectItemAtIndexPath
kodunu yazdığını fark ettim.
My First ViewController Kodu:
import UIKit
class ViewController: UIViewController {
...
override func viewDidLoad() {
super.viewDidLoad()
}
}
extension ViewController : UICollectionViewDataSource,UICollectionViewDelegate{
func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
return 1
}
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return items.count
}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("collCell", forIndexPath: indexPath) as! MainCollectionViewCell
...
return cell
}
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
itemId = items[indexPath.item].id
let distinationViewController = DistinationViewController()
distinationViewController.itemId = itemId
}
}
Benim distination görünümü denetleyicisi kodu
import UIKit
class DistinationViewController: UIViewController{
var itemId : String!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
print(itemId)
}
}
DistinationViewController
içinde itemId
değeri
nil sayesinde
olduğunu
Koleksiyon görünüm hücresinden ayarlanmış bir teklifiniz var mı? –
@Keviv evet, –
var, Tamam, 2 şey yapmalısın. 1. Segue'ınızı ViewController'dan ve hücreden değil bağlayın. 2. collectionView: didSelectItemAtIndexPath' içinde 'performSegueWithIdentifier' işlevini arayın ve oraya hedef görünümü denetleyicisini getirin ve orada itemID atayın. –