2010年11月30日 過去Blog
今回は、あるviewから他のviewへ移動させる方法を実装します。UINavigationController を利用し、以前の記事で制作済のコードを利用します。 以前の記事(とても簡単です。)をまだ読まれてない方は、そちらを読んでから、この記事をご覧ください。 今回学ぶこと:
  • 新規ビューの追加
  • ビューコントローラを追加する
  • ビューを移動するための設定
  • ビューとコードを接続
  • 戻るボタンを設置
まず、以前につくったHelloWorldアプリをXCodeで開きます。

[cell.textLabel setText:@”HelloWorld”];

となっている行を以下に編集します。

[cell.textLabel setText:@”NextView”];

新規ビューの追加

移動後に表示されるビューを作成します。RootViewController.xibをクリックし、Interface Builder を起動します。File > New をクリックし、左ペインの中からiOS > viewを選び、新規viewを作成します。 5-1

空のビューが作成されますので、そのviewの中に新しくlabelを配置します。表示されるテキストは「View2」と設定します。(表示されるテキストはお好きな文字列でかまいません。)

新しく作成したView2を保存します。保存先は、「HelloWorld」アプリを選び、その後に表示される確認ウインドウの中にある、HelloWorldをチェックして「add」ボタンをクリックします。

作成されたView2をXCode上でResourcesフォルダに移動しておきます。

ビューコントローラを追加する

新しいviewに接続するために、ビューコントローラを作成する必要があります。XCode上から ファイル > 新規ファイル をクリックし、左ペインのiOS > Cocoa Touch Classes から UIViewController subclass を選択し、「次へ」をクリックします。

5-2

View2ViewController という名前にして、「同時にView2ViewController.h も作成」をチェックし、「完了」ボタンを押します。

出来上がったView2ViewController.h と View2ViewController.m の二つをXCode上のClassesフォルダに移動します。

ビューを移動するための設定

RootViewController.h を開き、コードを以下のように編集します。
#import <UIKit/UIKit.h>

#import “View2ViewController.h”

@interface RootViewController : UITableViewController {

View2ViewController *view2ViewController;

}

@property(nonatomic,retain) View2ViewController *view2ViewController;

@end

#import “View2ViewController.h” によって、先ほど作成したViewControllerのヘッダーファイルを読み込み、これにより、View2ViewController型の新しいインスタンスを作成することが可能になります。 そして、view2ViewController というView2ViewController 型の変数を宣言しています。頭文字の大文字(V)と小文字(v)に注意してください。 view2ViewControllerは、View2ViewController のオブジェクトを参照する際に使う変数名です。 次に、RootViewController.m を開き、以下のコードを追加します。 @implementation RootViewController という一行の下に追加してください。

@synthesize view2ViewController;

次に、didSelectRowAtIndexPath というメソッドを探し、以下のように編集します。 このメソッドは、表のセルがタップされるたびに(自動的に)呼び出されます。 これは、indexPath を取得することに注意してください。これは、後で、NSArrayを使ってUITableViewを作成する方法を示す時に役に立ちますが、今は無視しておきましょう。

– (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

if(self.view2ViewController == nil){

View2ViewController *view2 = [[View2ViewController alloc] initWithNibName:@”View2″ bundle:[NSBundle mainBundle]];

self.view2ViewController = view2;

[view2 release];

}

// …

// Pass the selected object to the new view controller.

[self.navigationController pushViewController:self.view2ViewController animated:YES];

}

以下、コードの説明です。 まず、self.view2ViewController がnull かどうかチェックします。 これは、テーブルのセルが最初にクリックされた時に実行されます。 この後、ViewControllerは、パフォーマンスを最適化するために、メモリに格納されます。 次に、View2ViewControllerの新しいインスタンスを作成し、view2ViewControllerに設定します。(大文字と小文字の違いに注意してください。) viewControllerを設定したあと、メモリ解放(リリース)します。 Objective-Cはガベージコレクションを備えていないので、使われなくなったオブジェクトは明示的に自分でメモリを解放する必要があります。 最後の一行は、実際に、新しく作ったviewへ遷移させるものです。 navigationController のオブジェクトは、viewControllers を含んでいます。 最後のanimated:YES は、コンパイラに遷移の際にアニメーションが必要ということを伝えています。

ビューとコードを接続

このコードを実行する前に、コードと先ほど作ったviewを接続する必要があります。 View2.xib をダブルクリックして、Interface Builderを起動します。 View2ViewControllerクラスのオブジェクトとviewを関連づける必要がありますので、File’s Owner オブジェクトを選択し、Attributesインスペクタパネルの一番右の「identity」タブをクリックします。Class Identity > Class のドロップダウンからView2ViewController を選択します。 5-4 そして、viewウインドウ内の任意の場所をクリックし、Attributesインスペクタ内のConnections(左から2番目のタブ)をクリックします。New Referencing Outlet の右側の○をFile’s Owner までドラッグ&ドロップします。ドロップするとviewという選択肢がポップアップされるので、それを選択します。 5-5 この状態で一度、ビルドして実行してみてください。 「Next View」というセルをクリックすると、画面が遷移して、view2が表示されます。しかし、この状態では、NavigationControllerの上部に戻るボタンがありません。実際には戻るボタンはアップルから提供されていますが、それを利用するには、メインビューにタイトルを指定する必要があります。

戻るボタンを設置

iPhoneシミュレータを閉じて、RootViewController.m を開いてください。このビューが初めてロードされた時に呼ばれるメソッドであるviewDidLoadを以下のように編集します。

– (void)viewDidLoad {

[super viewDidLoad];

self.title = @”ナビゲーション;

}

RootViewController は、UITableViewControllerのサブクラスなので、それを使用してタイトルを設定しています。お好きな文字列を設定してみてください。 ここでは、「メインビュー」と設定しています。 この状態でビルドして実行すると以下のようにウインドウ上部にタイトルが表示されます。 5-6 「NextView」をクリックすると以下のように、戻るボタンが設置されているのが分かると思います。 5-7上部に表示された「ナビゲーション」ボタンをクリックすると前のページへ遷移するのが確認できると思います。

この投稿へのコメント

コメントを残す

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます。
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

CAPTCHA


ピックアップ記事

[7.5] iPhoneアプリに背景画像を設置する

2010年12月06日 過去Blog
iPhoneアプリの背景に独自の画像をいれたい場合の説明です。デフォルトのままでも特に気にならない方も多いかもしれませんが、少し味気ないので、背景を設定してみましょう。 …
「[7.5] iPhoneアプリに背景画像を設置する」をはてなブックマークに追加

[5]:配列データを使って、UITableViewと連携させる

2010年12月01日 過去Blog
今回のチュートリアルは、配列データを使って、UITableViewと連携させる方法です。SQLやXMLのデータを表示させるための要素になるでしょう。 今回は「フルーツ」をテーマに、名称のほか、いくつかの追加情報をもつ「フルーツオブジェクトの配列」を作成します。UITabeleViewに各フルーツの名称を表示させ、名称がクリックされるとviewが遷移し、そのフルーツの詳細情報を表示させます。 今回の記事は以下の記事を既読の方を想定しています。 [4]:View間での移動について [3]:Interface Builder と Xcode を接続する方法 [2]:Interface Builder のみで Hello World 今回学ぶこと: Navigation-Based Application の新規作成 フルーツClassのオブジェクト作成 NSArray 配列を作成し、書き込む 新規ビューの追加 viewとコードを接続する オブジェクトのデータをUITableViewに書き込む viewを遷移させ、選択された行に基づくデータを表示させる …
「[5]:配列データを使って、UITableViewと連携させる」をはてなブックマークに追加

Drupal6でクリーンURL

2011年04月25日 過去Blog
.htaccessに以下を記述してルートに設置 # Various rewrite rules. <IfModule mod_rewrite.c>   RewriteEngine on   # Modify the RewriteBase if you are using Drupal in a subdirectory and   # the rewrite rules are n…
「Drupal6でクリーンURL」をはてなブックマークに追加

データベースから重複データを削除して表示する

2010年03月25日 過去Blog
重複行を除いて表示したい場合は、select distinctを使用する SELECT DISTINCT [, 列名2 ...] FROM [WHERE条件式など] ※※ は必須、[]はオプション
「データベースから重複データを削除して表示する」をはてなブックマークに追加

テーブルの背景を設定する

2010年12月14日 過去Blog
iPhoneアプリに設置されているテーブルの背景色を変更する方法です。 //テーブルの背景色 self.view.backgroundColor = [UIColor groupTableViewBackgroundColor]; 文字列の設定と同様に、以下のような記述も可能です。 self.view.backgroundColor = [UIColor colorWithRed:0.0 gre…
「テーブルの背景を設定する」をはてなブックマークに追加
© graffiti on the web . All rights reserved. WordPress Theme by comfy