UIViewController
アイテムを に追加するために使用している のアプリがありUITableView
ます。ユーザーがいくつかのフィールドに入力すると、データがセルに表示されます。私は巻き戻しを行っており、呼び出し元のビューで関数を使用してデータを取得しています。アンワインドを作成するには、コントローラーから にドラッグしてクリックしExit
、関数を選択しました。
ここでUIViewController
、別の から同じものを使用してUIViewController
、ユーザーが追加されたデータを編集できるようにしたいと考えています。受け入れるボタンをクリックするUITableViewController
と、編集のために呼び出されたビューではなく、 に巻き戻されます。
承認ボタンのコードは次のとおりです。
@IBAction func acceptButtonClick(sender: UIBarButtonItem) {
performSegueWithIdentifier("ReturnFromAddItem", sender: title)
}
私がやりたいことはこれです:
@IBAction func acceptButtonClick(sender: UIBarButtonItem) {
if !editingFields {
performSegueWithIdentifier("ReturnFromAddItem", sender: title)
}
else {
performSegueWithIdentifier("ReturnFromEditItem", sender: title)
}
}
私がこれを行うことができるようには見えません。私のセグエ ID はReturnFromAddItem
です。2 つのアンワインド セグエを追加する方法がわかりません。これにどのようにアプローチできるか考えていますか?アドオンにあるのと同じ機能が必要です。呼び出し元の関数を巻き戻したい。
少し詳しく説明する必要があります。コントロール クリック ドラッグで 2 番目のアンワインドを Exit に追加できましたが、 で呼び出してperformSegueWithIdentifier
も何もしません。エラーはありませんが、View Controller を離れず、呼び出し元に戻ります。
さらに詳しく編集する。
ベース コントローラは BaseViewController と呼ばれます。これはUITableView
. UIViewController
ナビゲーション バーには、名前付きの AddViewControllerを呼び出す "+" ボタンがあります。「+」ボタンをクリックすると、ユーザーを AddViewController に移動するセグエがあります。ユーザーはいくつかのフィールドに入力し、Accept ボタンをクリックします。Accept ボタンのコードは上にリストされています。アンワインド セグエが呼び出されます。ユーザーが BaseViewController のアイテムをタップすると、ユーザーはUIViewController
名前付きの InformationController に移動します. そこから、ナビゲーション バーの [設定] ボタンをクリックしてデータを編集する機会をユーザーに与えたいと思います.これは、AddViewController に続きます。UIViewController
、しかしそれを使用して既存のフィールドを編集します。AddViewController が InformationController から呼び出されたときに InformationController に戻り、BaseViewController から AddViewController が呼び出されたときに BaseViewController に戻りたいとします。私が抱えている問題は、AddViewController のアンワインド セグエを InformationController に追加したにもかかわらず、Accept ボタンをクリックしても何も起こらないことです。
最終編集:私はそれを理解したと思います。InformationController では、viewWillDisappear を使用してアンワインド セグエを BaseController に呼び出しています。設定をクリックして InformationController から AddViewController を呼び出すと、viewWillDisappear が起動し、BaseViewController に巻き戻されます。したがって、私が把握する必要があるのは、引き続き viewWillDisappear を使用して、それが終わったために消えていないことを伝える方法を見つける必要があるかどうか、または別の場所からアンワインドを実行する必要があるかどうかです。