回答編集履歴

5 s修正

_Kentarou

_Kentarou score 8385

2016/08/09 08:41  投稿

前提として`Storyboard`で`Segue`を結び`Segue Identifier`を設定している必要があります。
そこまで準備ができていたら以下の方法で画面遷移ができると思います。
```swift
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
   
   if indexPath.row == 0 {
       performSegueWithIdentifier("vc1", sender: nil)
   } else if indexPath.row == 1 {
       performSegueWithIdentifier("vc2", sender: nil)
   }
}
```
後は汎用的な詳細画面に情報を渡して表示する場合は以下の様になると思います。
```swift
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
   
   performSegueWithIdentifier("detail", sender: photos[indexPath.row])
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
   
   if let detail = segue.destinationViewController as? DetailViewController {
       detail.detailLabelString = sender as? String
   }
}
```
---
回答を踏まえて`vc1`と`vc2`はModai表示でそれ以外は汎用の`DetailViewController`にしてみました、以下からダウンロードして試してみてください。
[teratail_43621 サンプル](https://github.com/KentarouKanno/teratail_43621)
[teratail_43621 サンプル](https://github.com/KentarouKanno/teratail_43621)
> func collectionView(collectionView: UICollectionView, didSelectItem・・・というのはセルをタッチした時のプログラムですよね? 教えてもらったプログラムの中身をprintに変えてみてセルを押してもprintが実行されなかったのは自分のsegueの設定に問題があるのではなくプログラミング自体になにか問題があるのでしょうか。
こちらは`collectionView`の`delegate`を`self`に設定していないからだと思われます。
4 修正

_Kentarou

_Kentarou score 8385

2016/08/09 08:36  投稿

前提として`Storyboard`で`Segue`を結び`Segue Identifier`を設定している必要があります。
そこまで準備ができていたら以下の方法で画面遷移ができると思います。
```swift
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
   
   if indexPath.row == 0 {
       performSegueWithIdentifier("vc1", sender: nil)
   } else if indexPath.row == 1 {
       performSegueWithIdentifier("vc2", sender: nil)
   }
}
```
後は汎用的な詳細画面に情報を渡して表示する場合は以下の様になると思います。
```swift
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
   
   performSegueWithIdentifier("detail", sender: photos[indexPath.row])
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
   
   if let detail = segue.destinationViewController as? DetailViewController {
       detail.detailLabelString = sender as? String
   }
}
```
```
---
回答を踏まえて`vc1`と`vc2`はModai表示でそれ以外は汎用の`DetailViewController`にしてみました、以下からダウンロードして試してみてください。
[teratail_43621 サンプル](https://github.com/KentarouKanno/teratail_43621)
3 修正

_Kentarou

_Kentarou score 8385

2016/08/08 08:08  投稿

前提として`Storyboard`で`Segue`を結び`Segue Identifier`を設定していることがあると思います。
前提として`Storyboard`で`Segue`を結び`Segue Identifier`を設定している必要があります。
そこまで準備ができていたら以下の方法で画面遷移ができると思います。
```swift
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
   
   if indexPath.row == 0 {
       performSegueWithIdentifier("vc1", sender: nil)
   } else if indexPath.row == 1 {
       performSegueWithIdentifier("vc2", sender: nil)
   }
}
```
後は汎用的な詳細画面に情報を渡して表示する場合は以下の様になると思います。
```swift
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
   
   performSegueWithIdentifier("detail", sender: photos[indexPath.row])
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
   
   if let detail = segue.destinationViewController as? DetailViewController {
       detail.detailLabelString = sender as? String
   }
}
```
2 修正

_Kentarou

_Kentarou score 8385

2016/08/08 07:16  投稿

前提として`Storyboard`で`Segue`で結すび`Segue Identifier`を設定していることがあると思います。
前提として`Storyboard`で`Segue`を結び`Segue Identifier`を設定していることがあると思います。
そこまで準備ができていたら以下の方法で画面遷移ができると思います。
```swift
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
   
   if indexPath.row == 0 {
       performSegueWithIdentifier("vc1", sender: nil)
   } else if indexPath.row == 1 {
       performSegueWithIdentifier("vc2", sender: nil)
   }
}
```
後は汎用的な詳細画面に情報を渡して表示することも可能です。
後は汎用的な詳細画面に情報を渡して表示する場合は以下の様になると思います。
```swift
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
   
   performSegueWithIdentifier("detail", sender: photos[indexPath.row])
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
   
   if let detail = segue.destinationViewController as? DetailViewController {
       detail.detailLabelString = sender as? String
   }
}
```
1 修正

_Kentarou

_Kentarou score 8385

2016/08/08 01:08  投稿

前提として`Storyboard`で`Segue`で結すび`Segue Identifier`を設定していることがあると思います。
そこまで準備ができていたら以下の方法で画面遷移ができると思います。
```swift
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
   
   if indexPath.row == 0 {
       performSegueWithIdentifier("vc1", sender: nil)
   } else if indexPath.row == 1 {
       performSegueWithIdentifier("vc2", sender: nil)
   }
}
```  
 
後は汎用的な詳細画面に情報を渡して表示することも可能です。  
 
```swift  
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {  
     
   performSegueWithIdentifier("detail", sender: photos[indexPath.row])  
}  
 
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {  
     
   if let detail = segue.destinationViewController as? DetailViewController {  
       detail.detailLabelString = sender as? String  
   }  
}  
```

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る