iPhoneアプリ開発 −UITabControllerの利用−
やりたいこと
上にあるように下部にあるタブをタッチしたら別のページを呼び出す。
方法
何種類かあると思いますが、今回は(2)のほうでやっています。
(1)UITabBarを使って設置したUIViewを表示させる
(2)UITabControllerを使ってUIViewControllerを呼び出す
内容
UIViewControllerの用意
タブの数だけUIViewControllerを継承したViewControllerを用意。
今回の例だと、以下の3種類を用意しています。
- TopViewController
- ListViewController
- AddViewController
宣言
「AppDelegate.h」にUITabBarControllerの宣言とUITabBarControllerDelegateを追加。
@interface AppDelegate : UIResponder @property (strong, nonatomic) UIWindow *window; @property (strong, nonatomic) UITabBarController *tabBarController;
実装
「AppDelegate.m」に以下のように記入。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [ [UIWindow alloc] initWithFrame:[ [UIScreen mainScreen] bounds]]; self.window.backgroundColor = [UIColor whiteColor]; TopViewController *topVC = [[TopViewController alloc] initWithNibName:nil bundle:nil]; ListViewController *listVC = [[ListViewController alloc] initWithNibName:nil bundle:nil]; AddViewController *addVC = [[AddViewController alloc] initWithNibName:nil bundle:nil]; topVC.title = @"トップ"; listVC.title = @"一覧"; addVC.title = @"登録"; NSArray *viewControllers = [NSArray arrayWithObjects:topVC, listVC, addVC, nil]; //(A-1) self.tabBarController = [[UITabBarController alloc] initWithNibName:nil bundle:nil]; [self.tabBarController setViewControllers:viewControllers animated:NO]; //(A-2) [self.window addSubview:self.tabBarController.view]; [self.window makeKeyAndVisible]; self.window.rootViewController = self.tabBarController; //(B) return YES; }
(A)について
(A-1)ViewControllerを入れたNSArrayを用意します。
(A-2)UITabBarControllerでsetViewControllersに(A-1)で用意したNSArrayを設置します。
NSArrayで値を入れた順にタブが表示されます。
(B)について
ここで注意点として、(B)のようにrootViewControllerを指定する必要があります。
そうしないと以下のようなエラーメッセージが表示されます。
Application windows are expected to have a root view controller at the end of application launch
以上で、タブをタッチすると指定したUIViewControllerが呼び出されます。
参考
広告
関連記事
-
iPhoneアプリ開発 -iOS6から変わったこと-
Deployment Targetを5.1にしていた時には気がつかなかったのですが、iOS6になって
-
jQueryMobileでタッチ(スワイプ)してページ遷移 -Paginationプラグインの利用-
スマートフォン対応をしていてタッチしてページ遷移させたいケースがあるかと思います。 そんな時に便利
-
githubを使っての開発(2) -masterブランチにマージ-
前エントリーでgithub-flowをもとにした流れを書いたのですが、その中のマージについてもう少し
-
アプリのためにFacebookページ作成 -現時点で注意すべき点-
* 前回 会社のメルアドでFacebookページを作成する方法を載せました。 * Faceboo
-
iPhoneアプリ開発 -バックグラウンド処理をした際にはまったこと-
* おきたこと 以下のメソッドを用いて、処理に時間がかかるもの(ここだとhoge)をバックグラウンド
-
CakePHP1.3でテストコード(2) -フィクスチャをいじってみる(テストデータの動的登録)-
cakePHP1.3でのSimpleTestを使ったテストケースの第2回目。 今回は、動的にテストデ
-
Objective-cで悩んでいたこと −アクセサのことについて−
* 疑問 以前書いたiPhoneアプリを開発していて(Objective-Cを触っていて)疑問に思
-
カレログ騒動で考えたライフログのこと
今回、カレログというAndroidアプリが話題になり騒動になってます。 というわけで、ふとカレログ
-
iPhoneアプリ開発 -WebViewで表示しているページで特定のリンククリック時の動作を変える-
* やりたいこと UIWebViewでWebページを表示し、特定のリンクをクリックした際には別処理を
-
iPhoneアプリ開発 -スライドアウトするスプラッシュ画像-
* やりたいこと アプリを起動すると表示される画像(スプラッシュ画像)があります。 単に表示されるだ