私はAppleのサンプルコードを使用しています。 は、もともとの方法は、私が見るために、本モーダルからセグエ種類を変更し、このSwift 3のunwind(for:UIStoryboardSegue、towardViewController:UIViewController)の使い方
@IBAction func doneTapped() {
favoriteCreatureDidChange?(favoriteCreature)
dismiss(animated: true, completion: nil)
}
(例えばプッシュ)のように見えました。したがって、却下はもはや機能しません。私はPrewuos VCに到達するためにUnwind Segueを使用する必要があります。
私はfavoriteCreatureDidChange?(favoriteCreature)
を実行する必要があるので、それはSourceVCでIBActionを宣言する場合ではありません - VCで宣言された変数が、私は現在午前
私は私が私のようunwind(for: UIStoryboardSegue, towardsViewController: UIViewController)
を使用する必要があると思います。 for:
パラメータを理解する現在のVCで私をtranferredしたsegueを使う必要があります。
私は
let segue = UIStoryboardSegue(identifier: "showFavoriteCreaturePicker", source: DreamListViewController, destination: FavoriteCreatureListViewController)
セグエのインスタンスを取得しようとしているが、それはFavoriteCreatureListViewControllerといいすべてだながら、XcodeはCannot convert value of type 'DreamListViewController.Type' to expected argument type 'UIViewController'
を文句を言います。
エラーを表示せずに、for:
パラメータにセグを渡す方法を教えてください。
解決に感謝します。それはうまくいった。また、Interface Builderでunwind segueを作成できるようにするには、戻したいコントローラにアンワインドメソッド(IBAction)を追加する必要があります。 – Anna
私は2つのボタンを持っているので(完了&キャンセル)。 'override func prepare(segue:UIStoryboardSegue、送信者:Any?){ super.prepare(:segue、送信者:送信者) let button = sender as! UIBarButtonItem button.style場合==の.done { favoriteCreatureDidChange?(favoriteCreature) }} ' はどのようにして' button.style'とUIBarButtonItemに送信者をダウンキャストせずにこれを行うには良い方法があると思いますか? – Anna
私が使用する古典的な方法は、2つのアンワインドアクションを用意し、Interface Builder(例えば "UnwindToDoneSegue"と "UnwindToCancelSegue")の識別子を2つのunwind segues(doneとcancelボタンのそれぞれに1つ) for:sender:) '(' segue.identifier'を使用します)。実際には、後でセグを追加する場合には常に識別子をチェックするという習慣を作りましたが、簡潔にするためにこれを残しました。 – thm