以前 シングルウィンドウのアプリとkonashiを接続してみましたが、今回は画面遷移するアプリとの接続をおこなってみました。
思わぬところでほんのりはまったので、ポイントのメモを残しておきます。
ほんのりはまったところ
前回 と同じコードをつかってみると、
[Konashi find];
を呼んだところでアプリが落ちました。。。
エラーを見てみると、
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Sheet can not be presented because the view is not in a window: <UIView: 0x176243d0; frame = (0 0; 320 568); autoresize = W+H; layer = <CALayer: 0x17623950>>'
的な感じで怒られていて、
どうやら探したkonashi一覧を表示するためのピッカーを追加するビューが無いことが原因のようです。
解決策 その1
konashiを探している、
[Konashi find];
の部分を、
[Konashi findWithName:@"接続したいkonashiの名前"];
に変更したところ無事に接続できるようになりました。
おそらく接続するkonashiを選択する為のピッカーを表示しなくて良くなったことが原因かと思われます。
事前に接続するkonashiの名前がわかっている場合はこれでOKのようです。
解決策 その2
konashi.m 内の、
UIView *rootView = [[[UIApplication sharedApplication] keyWindow] rootViewController].view;
を、
UIView *rootView = [UIApplication sharedApplication].keyWindow;
と、ピッカーを追加するビューをkeyWindowに変更したところ、
無事にkonashi一覧ピッカーが表示されるようになりました。
今回は事前に接続するkonashiの名前が予めわかっているので 解決策 その1 をつかおうかと思います。
今回は以上です。