// Cell が選択された場合

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    let cell = collectionView.cellForItem(at: indexPath)
    cell?.layer.borderColor = UIColor.gray.cgColor
    cell?.layer.borderWidth = 2
    selectedImage =  self.elementsImage[indexPath.row]
    if selectedImage != nil {
        performSegue(withIdentifier: "toSubPviewController",sender: nil)   - - - ①
}

// Segue 準備 - - - ②

func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if (segue.identifier == "toSubPviewController") {
        let subVC: SubPViewController = (segue.destination as? SubPViewController)!
        // SubViewController のselectedImgに選択された画像を設定する
        subVC.selectedImage = selectedImage
        }
    }
}

※ 画面はshowmodalでつなぎ segueのidentifierは"toSubPviewController"をセットしていますが①からSegue準備(prepare)に処理がいかず次の画面のviewDidLoadに飛んでいく為に
(prepare内の)subVC.selectedImage = selectedImageがセットされない状態です。

因みに②をoverride funcすると'override' can only be specified on class membersというエラーになってしまいます。