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


ピックアップ記事

Zencat : 共用SSLを利用する場合のセッション管理

2009年11月20日 過去Blog
Zencat のセッション管理については、「Zencart : セッションについて」で触れていますので、基本的な説明はそちらでご確認ください。 共用SSLを利用する場合のセッション管理についてですが、共用SSLを利用する場合は、基本的に自分の運用するドメインとSSLページは違うドメイン(サーバ会社のドメインなど)になることが多いと思います。 その場合は、ブラウザのクッキーに保存されているSSLページと非SSLページでのドメインが違うことになるので、セッションが正常に引き継げなくなり、カートが空になるなどの現象が起こります。 …
「Zencat : 共用SSLを利用する場合のセッション管理」をはてなブックマークに追加

[PHP]Cannot use object of type stdClass as array

2011年03月24日 過去Blog
根本的な解決ではないかもしれませんが、「Cannot use object of type stdClass as array」エラーが出る場合は、配列の扱い方を以下のように変更する事で解決しました。 $row["catID"] ↓ $row->catID
「[PHP]Cannot use object of type stdClass as array」をはてなブックマークに追加

フォームの送信ボタンを画像にする

2010年04月16日 過去Blog
<input type="image" src="画像のURL" onClick="submit"/> best web hosting USA…
「フォームの送信ボタンを画像にする」をはてなブックマークに追加

PHPでサイトのタイトルを取得

2010年03月30日 過去Blog
参照元:http://creazy.net/2008/05/php_get_page_title_sample.html how to cure depression…
「PHPでサイトのタイトルを取得」をはてなブックマークに追加

htmlファイルでphpを動かすための.htaccessファイルの設定

2009年11月20日 過去Blog
htmlファイルでphpを動かすための.htaccessファイルの設定 .htaccessファイル内に以下の行を記述します。 AddType application/x-httpd-php .htm .html 当然の前提条件として、htaccessの動作が許可されているサーバに限ります。…
「htmlファイルでphpを動かすための.htaccessファイルの設定」をはてなブックマークに追加
© graffiti on the web . All rights reserved. WordPress Theme by comfy