0

奇妙な問題があります。アプリの 1 つに、他のすべてのコントローラー/ビューの上にアイコンを配置したいと考えています。私のアイデアは、コンテンツ ビューを処理する UITabBarController の上にあるメインの XIB ファイル (プロジェクトは iOS 5 より前に開始されました) に UIImageView を作成することでした。

appDelegate の didFinishLaunchingWithOptions に ImageView を追加しました

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    ...
    // Add the icon view that shows current working status (working/pause)
    [self.window addSubview:self.statusIcon];
    ...
}

最初は ImageView は非表示で、ボタンが押されたときにのみ表示されます。次に、UIImage を割り当てて再表示します。

AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[delegate.statusIcon setImage:statusIconWorking];
[delegate.statusIcon setHidden:NO];

これはシミュレーターでは機能しますが、デバイスでは機能しません (iPod touch 4 世代および iPad 3 世代 (Retina) でテスト済み)。

誰かが私にそれがうまくいかないことを教えてもらえますか? これは画像の問題ではありません (デバイスに存在し、アプリの他の部分に正しく表示される ImageView に他の画像を読み込もうとしました)。

ありがとうございました。

4

1 に答える 1

0

同じ問題を一度観察しましたが、ここで解決策が見つかりませんでした。いくつかのヒントは役に立ちましたが、最終的にそれを突き止めました. これは一度だけ発生し、xcode のバージョンが変更された数日後に気付きました。ただし、解決策が何であるか、それが本当にバージョンの移行によって引き起こされたのかどうかはわかりませんでした。

その理由は、イメージ ファイルがバンドルの一部ではなかったためです。境界設定を確認してください。あなたが持っている可能性のあるすべてのターゲットに対してそうしてください。

私の観察では、イメージ ファイルはシミュレーターのバンドルに含まれていました。それは、あるバージョンから次のバージョンにとどまっただけではありません。シミュレーターからアプリを削除しても再インストールされました。実際のデバイスから削除するかのように、シミュレーターの GUI を使用して削除し、シミュレーターのファイル システムから手動で削除しました。いずれにせよ、ファイルは再インストールされました。

デバイスでは違いました。ベータ テスターがストアに提出する場合と同じように、IPA または APP バンドルを作成します。それを見てください。(ファイル名を .zip に変更して解凍すると、バンドルを調べるのに役立つ場合があります。) そこに画像が見つからないことは間違いありません。

解決策: プロジェクト設定を再確認し、すべてのリソースがすべてのターゲットにそれぞれ適切に含まれていることを確認します。

于 2012-07-23T13:57:33.283 に答える