[iOS 8] Today Extension で画像が表示されない時の解決法

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

画像が表示されない

Today Extension の実装中、Storyboard に配置した画像が表示されないといったことが起こりました。

画像はImages.xcassetsに格納してあります。Storyboard の Auto Layout の Constraints 設定にも問題ありません。画像は Containing App 側で正常に表示されているため、何らかの画像データ自体にも問題はない状態です。

iOS_Simulator_Screen_Shot_2014_10_28_18_57_05

原因を探る

App Extension を実行すると、以下の様なログが出力されていました。

2014-10-28 18:07:13.732 TodayExtension[12058:249072] Failed to inherit CoreMedia permissions from 11958: (null)<br>
2014-10-28 18:07:13.803 TodayExtension[12058:249029] Could not load the "dial" image referenced from a nib in the bundle with identifier "jp.xxx.xxx"

画像ファイルが読み込めないとのことですね。ここで、原因にたどり着きました。

Target Membership でチェックが入ってなかった

Images.xcassetsフォルダを選択し、Target Membershipを見てみると、見事に Today Extension のターゲットにチェックが入っていませんでした。

スクリーンショット 2014-10-28 18.53.30

ということで、Today Extension の方にもチェックを入れました。

スクリーンショット 2014-10-28 18.59.30

この状態で、再びビルド・実行すると、今度はエラーもなく無事表示されました。

iOS Simulator Screen Shot 2014.10.29 19.56.34

Asset Catalog に慣れていなかった

スクリーンショット 2014-10-28 18.36.36

長い間 Asset Catalog を用いずに、独自に作成した画像入りのフォルダをプロジェクトに追加する方法をとっていました。 この場合、ファイル追加時に Add to targets 欄で、どのターゲットに追加するかを指定できます。 このやり方に慣れていたため、今回の問題にはまってしまったようです。

同じトラブルに合われた方のお役に立てれば幸いです。