スポンサーサイト

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

[iOS]UINavigationControllerが表示されない・・・。

参考URL:
[伊勢的iPhone]
UINavigationController の view をviewにaddSubViewすると不幸になる

[kasuga log]
操作なしでpresentModalViewController



UINavigationControllerは癖が強すぎて使いにくい。
しかし一度使いこなせば非常に強力かつ素晴らしいユーザーインタフェースです。

今回悩んだ原因はこういうソースでした。
//ヘッダのほうでTopPageViewControllerをインポートしている前提です。
TopPageViewController *top = [[[TopPageViewController alloc] init] autorelease]
UINavigationController *nav = [[[UINavigationController alloc] initWithRootViewController:top] autorelease];
[self.view addSubView:nav.view];


これをするとものの見事にステータスバー分ずれたりPortlate状態になったりと暴れだします。
大抵のサイトではこんなソースで紹介されていますがしてはなりません。

そんなことしたらこのクラスは暴れだします。
なのでpresentModalViewControllerを利用して表示します。
※このメソッドを利用するに当たり、viewDidLoadで呼び出してはいけません。
この時点ではビューは読み込まれていないため、表示することができないです。
そのため、viewDidAppearを利用しましょう。


私の場合は、プロジェクト作成時に生成されたコントローラのviewDidAppearに記述しています。
//ビューの読み込み後でないとpresentModalViewControllerは利用できない。
-(void)viewDidAppear{
TopPageViewController *top = [[[TopPageViewController alloc] init] autorelease]
UINavigationController *nav = [[[UINavigationController alloc] initWithRootViewController:top] autorelease];
[self presentModalViewController:nav animated:NO];
}


これで表示されると思います。されない人は申し出てください。
このエントリーをはてなブックマークに追加

コメントの投稿

非公開コメント

Translation


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

チーズくん

Author:チーズくん
個人的メモをただ羅列しています。
twitter:@cheese1038

バロメーター
最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。