2016-06-29 15 views
2

私のViewControllerの1つを分割してリファクタリングしようとしています。 これはカード操作を行うアプリ向けです。私は複数のタイプのシャッフルを編集できるコントローラーを持っていましたが、今はシャッフルタイプごとに別々のコントローラーに分割しています。performSegueWithIdentifierが未知の例外をスローする

あなたが移動を選ぶことを可能にする別のストーリーボードがあります、それは隠されたボタンからセグを持つように設定されています。セグエは、ストーリーボード参照を指しています。もともと私はディスパッチストーリーボードのセグのシーンを作ってから、Xcodeのエディタ>リファクタリングをストーリーボードメニューに使ってリファクタリングしました。

次に、FaroEditorビューコントローラーの新しいストーリーボードを作成しました。次に、このストーリーボードへの参照を追加する方法を見つけようとしました。私は最終的にオブジェクトギャラリーに「Storyboard reference」を見つけました。

私は派遣ストーリーボードでこれを入れて、FaroEditorのストーリーボードを指すように設定します。

Storyboard

私はストーリーボードを置くためにphotoshoppingのビット、ストーリーボードの参照属性、およびセグエをしました単一の画像内の属性。

私は実行し、セグエをトリガーすると、私はそれが何であるかについて何らの情報でスローされた例外を取得:

Backtrace

は再び、私はに3つのトップスタックフレームをコピー&ペーストするフォトショップを使用しました単一の画像。

これを診断して解決する方法については少し迷っています。何か案は?

+0

? – WMios

+0

バックトレースでは、それは 'editFaro'で、元のストーリーボードのセグのIDです。 – RickDeNatale

+0

私はもう少し調査をしました。私はマシンコードを踏んで、StoryBoard.instantiateViewControllerWithIdentifier:が呼ばれたときに爆発しています。私はどこでそれが使用している識別子を取得しているdecypherすることができませんでした。 デバッガでは、目的のストーリーボードをインスタンシエートし、次にinstantiatteViewControllerWithIdentifierを使用できます。手動で割り当てた識別子を使用しますが、UIKitコードがどのようにView Controllerの識別子が間違っているかわかりません。私は手動でビューコントローラに識別子を渡すかどうかにかかわらず失敗します。 – RickDeNatale

答えて

0

UIの操作は、メインスレッドで実行する必要がありインスペクタを参照しているビューに「ストーリーボードID」を追加し、属性で参照IDと同じIDを追加する必要が

DispatchQueue.main.async { 
self.performSegue(withIdentifier: "someSegue", sender: self) 
} 

重要 特に指定のない限り、UIKitクラスは、アプリのメインスレッドまたはメインディスパッチキューからのみ使用してください。この制限は、特にUIResponderから派生したクラスや、アプリのユーザーインターフェイスを操作するクラスに適用されます。 `その時点で同じsegueId`ん何

developer.apple.com/documentation/uikit

関連する問題