5

最近 XCode を 4.5 バージョンにアップグレードしましたが、iOS 5.0/5.1 向けにアプリケーションを開発しようとすると問題が発生します。

ユーザーが画像と対応する単語を一致させる必要があるシンプルな iPad ゲームを開発しました。関連する場合、これらの項目はすべて UIImageView に保存されます。サポートされているインターフェースの向きは横向きのみです。

iPad 6.0 Simulator を使用してアプリケーションを実行すると、問題なくすべて正常に動作します。しかし、5.1 を使用して実行しようとすると、すべてがうまくいきません。画像が表示されず、背景画像が横向きに繰り返し表示されます。ステータス バーも間違って表示されます。デバイスの向きは横ですが、サイドバーは右側に表示されます。これは、6.0 シミュレーターを使用する場合にも発生しません。

プロジェクトの詳細で、ストーリーボードと同様に iOS 展開ターゲットを 5.1 に変更しました。iOS 5.1 デプロイメント ターゲットを使用すると、ストーリーボードで [自動レイアウトを使用] オプションを選択できないため、このオプションの選択を解除しました。これはこのオプションが原因ですか?

すでにアプリケーションをデバイスで実行しようとしましたが、結果は同じです。XCode 4.5 をインストールしてから、この種の問題が発生し始めました。たとえば、「追加」ボタンをクリックするとクラッシュするため、iOS 5.x シミュレーターで「マスター詳細アプリケーション」テンプレートを適切に実行することさえできないためです。 .

SDK 6 を使用して作成された 5.x アプリケーションを実行するために何か不足していますか? すでに多くのフォーラムを検索しましたが、この種の問題に対する解決策はまだ見つかりません。私はすでにこの問題に多くの時間を費やしており、選択肢が不足しているため、どんな種類の提案も喜んで聞いています.

[編集] : この問題に関連する可能性がある詳細を思い出しました: ストーリーボードの私のビューはカスタム ビューです。UIView から拡張するクラスを作成して、 drawRect 関数をオーバーライドしてオブジェクト間に線を描画できるようにしました。次に、ストーリーボードのビューで、カスタム クラス -> クラスでクラスを選択しました。

5.1 シミュレーターを実行すると、最初はステータス バーが一番上に表示され、ウィンドウが読み込まれると右に移動することに気付きました。

他の詳細を知りたい場合は、私に聞いてください。

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

4

3 に答える 3

4

英語は私の母国語ではないので、私の文法を許してください...

マスター詳細の「追加」ボタンの問題に関しては、これでうまくいきました。

私が知る限り、次の理由でアプリがクラッシュします。

[UITableView dequeueReusableCellWithIdentifier:forIndexPath:]: unrecognized selector sent to instance

クイックヘルプは次のように述べています。

- (id)dequeueReusableCellWithIdentifier:(NSString *)identifier forIndexPath:(NSIndexPath *)indexPath declaration is only available in iOS (6.0 and later).

そこで、MasterViewController.m のコードを変更してみました。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
    [self configureCell:cell atIndexPath:indexPath];
    return cell;
}

Xcode が古いバージョンで使用していたコードの場合:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

    }
    [self configureCell:cell atIndexPath:indexPath];
    return cell;
}

お役に立てれば。

于 2012-10-25T01:25:29.400 に答える
2

ストーリーボードをチェックして、Autolayout がオフになっていることを確認しましたか? Autolayout は iOS6 でのみ機能します。このオプションは、Interface Builder ドキュメントの下のファイル インスペクター領域でビュー コントローラーを見ると見つかります。チェックボックスです

于 2012-09-27T17:40:52.683 に答える
0

XCode 4.5 で Simulator 5.1 の問題を抱えているのはあなただけではないようです。 UIManagedDocument を使用した Xcode 4.5 での iPhone Simulator 5.1 のバグ 私のアプリも壊れました。5.0のSIMでも十分使えそうです。

于 2012-10-10T01:52:56.230 に答える