31

アンワインド セグエ セクションを使用したスト​​ーリーボードの実装に関するアップルのデモ ビデオを見て、メイン ビューでカスタム ボタンを使用したデモを見ました。それはうまくいきます。

ここでも同じことがうまくいく良い例を見てきました。http://www.techotopia.com/index.php/Using_Xcode_Storyboarding_%28iOS_6%29#Unwinding_Storyboard_Segues

ただし、通常のプッシュ セグエを親 (メイン フォーム データを含む) から子 (詳細設定オプションを含む) に渡し、カスタム ボタンをオンにするのではなく、ナビゲーション バーの [戻る] ボタンを使用して親ビュー コントローラーに戻りたいと考えています。デモに示されているビュー。親コントローラーの保存ボタンが押されると、親コントローラーはすべてを API サーバーに保存します。

ナビゲーションの戻るボタンをオーバーライドして、アンワインド セグエ アクションに向けることができないようです。また、ストーリーボードに戻るボタンが表示されないため、緑色の [終了] ボタンをそれにドラッグすることはできません。

アクションをオーバーライドするために viewDidLoad でこれを試しましたが、機能しませんでした [self.navigationItem.backBarButtonItem setAction:@selector(unwindSegueAction:)];

戻るボタンでプッシュセグを巻き戻すことはできますか?

私がこれまでに持っていた最良のアイデアは、viewDidLoad メソッドから戻るボタンをオーバーライドすることでしたが、それは斜めの戻るボタンのスタイルを削除し、単純な問題に対する大まかなハックのようにも思えます

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"back" style:UIBarButtonItemStyleBordered target:self action:@selector(unwindSegue:)];

プロトコルとデリゲートを使用するための答えがあることは知っていますが、Xcode4.5 のアンワインド セグエ メソッドの使用に興味があります。

4

4 に答える 4

14

結局、ナビゲーションコントローラーをたどることで親コントローラーメソッドへの参照を取得できたので、セグエをほどく必要はありませんでした。

- (void)viewWillDisappear:(BOOL)animated子コントローラーのメソッドで以下を行うことで参照を得ることができました

NSInteger currentVCIndex = [self.navigationController.viewControllers indexOfObject:self.navigationController.topViewController];

FirstViewController *parent = (FirstViewController *)[self.navigationController.viewControllers objectAtIndex:currentVCIndex];

parent.barcodeType = indexPath.row;

これにより、設定変数が元のコントローラーに完全に戻されました。

また、子コントローラーの上部にある親コントローラーへのインポート参照を追加しました

于 2012-11-26T11:35:34.173 に答える
5

上記の @Chuck H の提案に従う Swift ソリューションを追加したいと思います。

let rootVC = self.navigationController!.topViewController
if rootVC.isKindOfClass(TheNameOfYourViewController) {
    performSegueWithIdentifier("yourNamedSegueIdentifier", sender: self)
}
于 2015-09-04T13:57:13.100 に答える