Realmで取得したデータをUICollectionViewで表示
現在Realmを使って画像データとテキストを保存し、UICollectionViewで画像のみの表示を行っています。
UICollectionViewのセルをクリックすると画面遷移を行い、保存した画像とテキストを表示させたいと考えています。
イメージとしては、通販サイトなどで商品をクリックし、その詳細ページに飛ぶ感じです。
データの保存とUICollectionViewで画像の表示まではできたのですが、その後画像(セル)をクリックしてデータをどのように遷移先に送るのかがわかりません。
普通の変数などであればSegueで値を渡せると思うのですが、
データベースの場合も表示されている値を格納した変数をSegueで送ることは可能なのでしょうか?
//メンバ変数
var a : ToDo?
var toDoItems:Results<ToDo>?{
do{
let realm = try Realm()
return realm.objects(ToDo)
}catch{
print("エラー")
}
return nil
}
...
extension ViewController: UICollectionViewDataSource {
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return toDoItems?.count ?? 0
}
//データを返すメソッド
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell{
let toDo = toDoItems?[indexPath.row]
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! collectionviewcell
cell.image1.image = toDo?.image
return cell
}
// Cell が選択された場合
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: NSIndexPath) {
var toDo = toDoItems?[indexPath.row]
a = toDo
if a != nil{
performSegueWithIdentifier("toSubViewController",sender: nil)
}
}
// Segue 準備
func prepare(for segue: UIStoryboardSegue, sender: AnyObject!) {
if (segue.identifier == "toSubViewController1") {
let subVC: SubViewController = (segue.destinationViewController as? SubViewController)!
subVC.a1 = a
}
}
}