こんにちは、ストーリーボードなしでプログラムでセグエを実行しようとしています。現在、私はこれを私のコードとして持っています:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "popOutNoteExpanded" {
let vc = segue.destination as! ExpandedCellViewController
let cell = sender as! AnnotatedPhotoCell
sourceCell = cell
vc.picture = cell.imageView.image
print("button pressed")
}
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
performSegue(withIdentifier: "popOutNoteExpanded", sender: indexPath)
}
コレクションビューのセルをクリックすると、次のように表示されます。
識別子「popOutNoteExpanded」のセグエはありません。
カスタムアニメーショントランジションの実行方法がわからない。
セグエはストーリーボードのコンポーネントです。ストーリーボードがない場合は、セグエを実行できません。ただし、次のように現在のView Controllerを使用できます。
let vc = ViewController() //your view controller
self.present(vc, animated: true, completion: nil)
プログラムでセグエをトリガーするには、次の手順を実行する必要があります。
1。ストーリーボードで2つのView Controller間で目的のセグエをドラッグおよび識別子を設定(たとえば、属性インスペクターセクションの「popOutNoteExpanded」)で設定します。
2。プログラムで呼び出す
performSegue(withIdentifier: "popOutNoteExpanded", sender: cell)
識別子を正しく設定しているかどうかを確認してください。
また、上記のコードでは、誤った送信者を指定しています。 prepare()メソッドでは、送信者をUITableViewCellとして使用しますただし、送信者をIndexPathとしてperformSegue()を呼び出します。
次を呼び出すことでセルが必要です。
let cell = tableView.cellForRow(at: indexPath)
そして、セグエを実行できます:
performSegue(withIdentifier: "popOutNoteExpanded", sender: cell)
正しい答えに加えて、ナビゲーションスタックにいる場合(たとえば、[設定]ページにいて、MyAccountVCに移行したい場合)を使用する必要があることに注意してください。
let vc = MyAccountVC()
self.navigationController?.pushViewController(vc, animated: true)
遷移中にナビゲートされたVCが透明な背景で表示される場合は、そのbackgoundColor
を.white
に設定するだけです。