読者です 読者をやめる 読者になる 読者になる

みかづきブログ その3

3ヶ月つづけてみました。

画面遷移するアプリでKonashiをつかってみよう。

以前 シングルウィンドウのアプリと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 をつかおうかと思います。

今回は以上です。