私はSwiftの初心者です。CollectionView代理人から別のViewControllerにデータを渡します。
私はにCollectionView
を持っています。ユーザーがCollectionViewCell
を別のViewController
にクリックしたときにデータを渡す必要があります。 私はprepareForSegue
を無効にしようとしましたが、最初にdidSelectItemAtIndexPath
というコードを呼び出したことに気付きました。
私の最初のViewControllerコード:
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
}
}
マイDistinationビューコントローラコード
import UIKit
class DistinationViewController: UIViewController{
var itemId : String!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
print(itemId)
}
}
DistinationViewController
でitemId
の値が
おかげ
nilであります
segueはcollectionviewセルから設定していますか? –
@Kevivはい、私は –
です。さて、あなたは2つのことをする必要があります。 1.セルからではなくViewControllerからsegueを接続します。 2. 'collectionView:didSelectItemAtIndexPath'で' performSegueWithIdentifier'を呼び出してそこのビューコントローラをフェッチし、そこでitemIDを割り当てます。 –