WEBアプリケーション研究室 開発ノート TOP

WEBアプリケーション研究室 開発ノート [iPhone開発]UIViewControllerの初期化メソッドとタイミング

スポンサーサイト

-------- --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

    このエントリーをはてなブックマークに追加

Viewをnibファイルから読み込んで表示するとき様々なタイミング初期化メソッドが呼ばれます。


#import "ViewBaseViewController.h"

@implementation ViewBaseViewController
@synthesize label;

- (void)loadView {
[super loadView];
NSLog(@"loadView");
}

- (void) viewWillAppear:(BOOL)animated
{
NSLog(@"viewWillAppear");
}

- (void) viewDidAppear:(BOOL)animated
{
NSLog(@"viewDidAppear");
}

- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"viewDidLoad");
}

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

@end
実行すると

ViewBase[12262:207] loadView
ViewBase[12262:207] viewDidLoad
ViewBase[12262:207] viewWillAppear
ViewBase[12262:207] viewDidAppear
こんな順番で呼ばれます。気をつけなかればいけないのはloadViewとviewDidLoadはnibが最初に読み込まれる時だけ呼ばれます。Viewを切り替えて使うようなアプリケーションで切り替え時にUIの値を変更したい時はviewWillAppearでやらなければなりません。

それと、もう一点、UIの値を変更するタイミングですが、nibが読み込まれるまで変更はできません。例えばアプリケーションのデリゲートメソッドapplicationDidFinishLaunchingで

- (void)applicationDidFinishLaunching:(UIApplication *)application {
viewController.label.text = @"foo bar";
[window addSubview:viewController.view];
[window makeKeyAndVisible];
}
こんな風にやっても、nibを読み込む前なのでOutletが接続されていません。このタイミングで変更しても反映されません。javascriptで対象HTML要素が読み込まれる前に変更を試みるのとにてる感じです。
スポンサーサイト

    このエントリーをはてなブックマークに追加
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。