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


ピックアップ記事

PHP 配列から空白要素を削除する

2010年02月20日 過去Blog
配列 $array_exampleの要素のなかで、空白のものを削除。 $array_example = array_filter($array_example, 'strlen');
「PHP 配列から空白要素を削除する」をはてなブックマークに追加

Drupal 6.2 日本語版でTinyMCE 3.0.7を使う

2011年05月09日 過去Blog
■ダウンロード SourceForge.JP: TinyMCE Japan Project File List http://sourceforge.jp/projects/tinymce-ja/files/ ■アップロード後の作業手順(ダウンロードファイルに同梱されている「はじめに.txt」から引用) 1.TinyMCEモジュールを有効化 [管理セクション} > [モジュール]をクリックし…
「Drupal 6.2 日本語版でTinyMCE 3.0.7を使う」をはてなブックマークに追加

デジカメのメモリやUSBメモリのデータを誤って削除、フォーマットしてしまった場合の復元方法

2010年10月07日 過去Blog
以下のフリーソフトで復元できました。 http://www.powerdatarecovery.com/ 日本の有料の物も試してみましたが、上記の無料のソフトのほうが精度が高かったです。 anabolic pharma - your personal online pharmacy store…
「デジカメのメモリやUSBメモリのデータを誤って削除、フォーマットしてしまった場合の復元方法」をはてなブックマークに追加

PHP short_open_tag

2010年04月05日 過去Blog
php.iniの short_open_tag = On にすることで <?php の省略形が使えるようになる。 <?php echo "test"; ?> ↓↓↓↓↓↓↓↓ <? echo "test"; ?> best-wedding.getbestnews.com…
「PHP short_open_tag」をはてなブックマークに追加

Drupal 関連サイト

2011年04月24日 過去Blog
http://www.forest-and-trees.com/comment/reply/146#comment-form http://www10.atwiki.jp/drupal/
「Drupal 関連サイト」をはてなブックマークに追加
© graffiti on the web . All rights reserved. WordPress Theme by comfy