0

デバイスを iOS 6 にアップグレードしたため、XCode を 4.3.3 から 4.5.2 にアップグレードする必要がありましたが、以前 (つまり、アップグレード前) には非常にうまく機能していたアプリが機能しなくなりました。問題は、ビューがインスタンス化されていないことです。この行は実行されていません:

in Home.h
#import "ViewController_Album.h"
...
@class ViewController_Album;
...
@interface Home
...
@property (nonatomic, retain) ViewController_Album *viewAlbum;
...



in Home.m

@synthesize viewAlbum;
...
...
    - (void)viewDidLoad {
        self.viewAlbum = (ViewController_Album *) [((com_AppDelegate *) [[UIApplication sharedApplication] delegate]).storyboard instantiateViewControllerWithIdentifier:@"ViewController_Album"];
        NSLog(@"call album.initview");
        [self.viewAlbum initializeView];

    }

そしてストーリーボードで

ここに画像の説明を入力 ここに画像の説明を入力

「ストーリーボード ID」(新規) と「タイトル」の両方を ViewController_Album に設定しました。だからうまくいくはずです!ただし、[self.viewAlbum initializeView] が呼び出されていないことがわかります (このメソッド内で print ステートメントを試してみましたが、どれも印刷されていません)。viewAlbum がインスタンス化されていないためです。それはなぜです?ただし、これはアプリ内の他のいくつかのページで機能します (同じコードを使用してそれらをインスタンス化し、アップグレード後も正常に機能しています!)

助けてください。

4

1 に答える 1

0

私は問題を見つけました; AppDelegateの「didfinishLaunchingWithOptions」が完了する前でも、ホームページのviewDidLoadが呼び出されていたようです。だから、私はdidfinishLaunchingWithOptionsでストーリーボードの初期化を行っていたので、うまくいきませんでした!ここで、代わりにコードをviewWillAppear()に移動しました。今、それはうまくいきます!

于 2012-11-23T20:05:29.327 に答える