0

非常に単純なビューを表示するのに苦労しています。このビューには、切り替えビュー コントローラーによって管理されるカスタム ビュー コントローラーがあります。XIB には、Image プロパティが設定された 1 つの UIViewController コンポーネントがあります。ビューコントローラーは次のとおりです。

InstructionsViewController.h

#import <UIKit/UIKit.h>

@interface InstructionsViewController : UIViewController {

}

@end

InstructionsViewController.m

#import "InstructionsViewController.h"

@implementation InstructionsViewController



- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning]; // Releases the view if it doesn't have a superview
    // Release anything that's not essential, such as cached data
}

- (void)dealloc {
    [super dealloc];
}


@end

また、XIB の File's Owner のクラス プロパティを InstructionsViewController に設定し、Ctrl+Dragged File's Owner を View アイコンに設定し、ポップアップ メニューから View を選択しました。

ビューを表示するコードは次のとおりです。

- (void) showInstructions
{
    //Lazy load the instruction view.
    if (self.instructionsViewController == nil)
    {
        InstructionsViewController *viewController = [[InstructionsViewController alloc]
                                                initWithNibName:@"InstructionsView" 
                                                bundle:nil];
        self.instructionsViewController = viewController;
        [viewController release];
    }

    [self.view insertSubview:viewController.view atIndex:0];
}

切り替え時に異なるビューをアニメーション化するビュー コントローラーは、他の 3 つのビューの読み込みと表示に問題はありません。これが気に入らないだけです。

簡単なことを見逃していると確信していますが、私の人生では、何らかの理由でそれを機能させることができません。誰にも指針がありますか?

ありがとう、

スティーブ

4

4 に答える 4

1

私はちょうど同じことをしました。UIImageViewを削除して、新しいものを配置してから再リンクすると、うまくいきました。どこかで腐敗しているようです。

于 2012-11-11T09:37:07.700 に答える
0

showInstructionsそこにブレークポイントを設定して、呼び出されていることを確認しましたか?もう1つ確認する必要があるのは、Instructionsビューをzオーダーの下部に挿入しているため、他のすべてのアイテムの背後にあることです。使用してみてください:

[self.view addSubview:self.instructionsViewController.view];

これにより、Zオーダーの最上位に追加されます。それでもうまくいかない場合は、次のことも試してください。

[self.view setNeedsLayout];

および/または:

[self.instructionsViewController.view setNeedsLayout];
于 2009-07-18T18:38:29.047 に答える
0

これがどのようにコンパイルされているかさえよくわかりません。viewController が範囲外である nil チェックの外にサブビューを挿入しています。

あなたはおそらくやりたい

[self.view insertSubview:self.instructionsViewController.view atIndex:0];

于 2009-07-17T00:55:14.563 に答える
0

わかりました、私はついにそれを解決しました!

問題は、XCode または Interface Builder の何かが、IB の Image View コントロールに指定した PNG ファイルと一致していなかったことです。名前の変更、再指定などを試みましたが、役に立ちませんでした。

最後に、グラフィックを削除して、ソースの場所から再コピーする必要がありました。次に、Image View で再指定し、ビルドして実行しました。今では動作します。

すべてが再び世界で良いです。

時間を割いて読んで助けてくれた人に感謝します。とても感謝しています!

スティーブ

于 2009-07-18T20:32:59.440 に答える