0

私は Swift を勉強しており、DesignCode でコースを作成しています。そして今、学んだことを改善するためにアプリを作成しようとしています。

それが私がすることです:

  • UIViewController を作成し、UITableViewController へのセグエを実行します。

  • UITableViewController に、「戻る」バー ボタン アイテムを作成するナビゲーション バーを組み込みました。

  • そして、この「Back」を終了にリンクし、「Spring」を介して巻き戻すセグエを実行します。

このボタンをクリックすると、次のエラーが表示されます。

2015-06-04 15:32:08.662 Vitrine[2883:67901] *** Assertion failure in -[UIStoryboardUnwindSegueTemplate _perform:], /SourceCache/UIKit_Sim/UIKit-3347.44/UIStoryboardUnwindSegueTemplate.m:78
2015-06-04 15:32:08.676 Vitrine[2883:67901] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not find a view controller to execute unwinding for <UINavigationController: 0x7ae41540>'
*** First throw call stack:
(
    0   CoreFoundation                      0x0154d746 __exceptionPreprocess + 182
    1   libobjc.A.dylib                     0x02f4ea97 objc_exception_throw + 44
    2   CoreFoundation                      0x0154d5da +[NSException raise:format:arguments:] + 138
    3   Foundation                          0x019c3720 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 118
    4   UIKit                               0x0253d3b4 -[UIStoryboardUnwindSegueTemplate _perform:] + 387
    5   UIKit                               0x0237c313 -[UIStoryboardSegueTemplate perform:] + 116
    6   libobjc.A.dylib                     0x02f647cd -[NSObject performSelector:withObject:withObject:] + 84
    7   UIKit                               0x01d72a90 -[UIApplication sendAction:to:from:forEvent:] + 99
    8   UIKit                               0x020f8bba -[UIBarButtonItem(UIInternal) _sendAction:withEvent:] + 139
    9   libobjc.A.dylib                     0x02f647cd -[NSObject performSelector:withObject:withObject:] + 84
    10  UIKit                               0x01d72a90 -[UIApplication sendAction:to:from:forEvent:] + 99
    11  UIKit                               0x01d72a22 -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 64
    12  UIKit                               0x01eb318a -[UIControl sendAction:to:forEvent:] + 69
    13  UIKit                               0x01eb35a7 -[UIControl _sendActionsForEvents:withEvent:] + 598
    14  UIKit                               0x01eb2811 -[UIControl touchesEnded:withEvent:] + 660
    15  UIKit                               0x01dcacfa -[UIWindow _sendTouchesForEvent:] + 874
    16  UIKit                               0x01dcb7d6 -[UIWindow sendEvent:] + 792
    17  UIKit                               0x01d896d1 -[UIApplication sendEvent:] + 242
    18  UIKit                               0x01d99b08 _UIApplicationHandleEventFromQueueEvent + 21484
    19  UIKit                               0x01d6d337 _UIApplicationHandleEventQueue + 2300
    20  CoreFoundation                      0x0146f06f __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15
    21  CoreFoundation                      0x01464b7d __CFRunLoopDoSources0 + 253
    22  CoreFoundation                      0x014640d8 __CFRunLoopRun + 952
    23  CoreFoundation                      0x01463a5b CFRunLoopRunSpecific + 443
    24  CoreFoundation                      0x0146388b CFRunLoopRunInMode + 123
    25  GraphicsServices                    0x050c62c9 GSEventRunModal + 192
    26  GraphicsServices                    0x050c6106 GSEventRun + 104
    27  UIKit                               0x01d71106 UIApplicationMain + 1526
    28  Vitrine                             0x00076cd4 main + 180
    29  libdyld.dylib                       0x0366bac9 start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException

よろしく、 ディオゴ・アマラル

4

2 に答える 2

0

標準のナビゲーションとナビゲーション バーを追加するには、UINavigationController. は、ナビゲーション フロー (スタック) 内の他のUINavigationControllerビューを「ラップ」するため、どのビューにも追加する必要はありませんUINavigationBar

正しく実装されていればBack、 によって自動的に処理されますUINavigationController

ここに画像の説明を入力

左矢印:初期ビュー コントローラーは、UINavigationController

1 番目のセグエ: ルート ビュー コントローラー = 表示される最初のビュー コントローラー。

2 番目のセグエ: show. セグエをトリガーするshowと、UINavigationController が次のビューをプッシュします。戻るナビゲーション用の戻るリンクが表示されます。

show segueを使用して、必要な数のビューをチェーンできshowます。また、必要に応じて、1 つの同じビュー コントローラーから多くのセグエを作成できます。

アップデート:

また、さまざまな理由で巻き戻しセグエを本当に使用したい場合は、それらがどのように機能するかについての優れた説明を次に示します。

Unwind セグエとは何ですか? また、どのように使用しますか?

于 2015-06-04T19:11:22.210 に答える
0

取得したいビューで、次のような IBAction を作成する必要があります。

@IBAction func back(segue:UIStoryboardSegue) {
        //no code here, unless you want to do something when exiting
    }

次に、終了するビューで、exit にリンクしますbarButtonItem(IBAction がそこに表示されます)。

于 2015-06-04T19:23:38.663 に答える