SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

iPhoneプログラミングの基礎:View Controller

ビューの切り替え、切り替え時のアニメーション設定、ビュー間のデータ受け渡し方法

 では、前ページのクラスのデフォルトファイルの内容を見てみましょう。「VCExampleViewController.m」ファイル内のコードは、リスト1のようになっています。

リスト1
#import "VCExampleViewController.h"
 
@implementation VCExampleViewController

/*
// The designated initializer. Override to perform setup 
// that is required before the view is loaded.
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:
    (NSBundle *)nibBundleOrNil {
    if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
        // Custom initialization
    }
    return self;
}
*/

/*
// Implement loadView to create a view hierarchy programmatically, 
// without using a nib.
- (void)loadView {
}
*/

/*
// Implement viewDidLoad to do additional setup after loading the view, 
// typically from a nib.
- (void)viewDidLoad {
    [super viewDidLoad];
}
*/

/*
// Override to allow orientations other than the 
// default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)
  interfaceOrientation {
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
*/

- (void)didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];
    
    // Release any cached data, images, etc that aren't in use.
}

- (void)viewDidUnload {
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

- (void)dealloc {
    [super dealloc];
}

@end

 リスト1のコードでは、既にさまざまなメソッドが定義されており、コメントアウトされているメソッドもいくつかあります。これらのメソッドはすべて、このView Controllerで発生する各種イベントのイベントハンドラです。例えば、このコントローラのビューがメモリにロードされると、viewDidLoadメソッドが実行されます。プログラミングによってビューのUIを作成するには、loadViewメソッドをオーバーライドします。

 次に、「VCExampleViewController.xib」ファイルをダブルクリックし、内容を確認します(図5を参照)。[File's Owner]項目がVCExampleViewControllerクラスにマップされています。

図5 VCExampleViewController.xib:「VCExampleViewController.xib」ファイルを開いた状態
図5 VCExampleViewController.xib:「VCExampleViewController.xib」ファイルを開いた状態

 [View]項目をダブルクリックし、背景色を緑色に変更し、Buttonビューを追加します(図6を参照)。この時点でInterface Builderでプロジェクトを保存してください。

図6 新しいビュー:背景色を緑色に変更し、Buttonを追加したビュー
図6 新しいビュー:背景色を緑色に変更し、Buttonを追加したビュー

 Xcodeに戻り、「VCExampleViewController.h」ファイルを開き、以下のコードの太字部分を追加します(コードを追加したら、ファイルを保存しておきます)。

#import <UIKit/UIKit.h>
@interface VCExampleViewController : UIViewController {
}
//---declare an action for the Button view---
-(IBAction) displayView:(id) sender;
@end

 Interface Builderに戻り、Buttonビューを[File's Owner]項目へ[Control]キーを押しながらドラッグし、[displayView:]を選択します(図7を参照)。

図7 イベントの処理:Buttonビューにアクションを接続するには、Buttonビューを[File's Owner]項目へドラッグし、[displayView:]を選択する
図7 イベントの処理:Buttonビューにアクションを接続するには、Buttonビューを[File's Owner]項目へドラッグし、[displayView:]を選択する

 これによって、コードに追加したdisplayView:アクションがButtonビューのTouch Up Insideイベントに接続されます。

 今度は、「VCExampleViewController.m」ファイルにコードを追加して、ユーザーがButtonビューをクリックしたときに簡単なアクションが実行されるようにします。これによって、そのアクションがイベントと正しくリンクしていることを確認できます。以下のコード(displayView:メソッド)を追加します。

-(IBAction) displayView:(id) sender{
    
    UIAlertView *alert = [[UIAlertView alloc] 
          initWithTitle:@"Button Pressed" 
          message:@"You have pressed the Button view."
          delegate:self 
          cancelButtonTitle:@"OK" 
          otherButtonTitles:nil];
    [alert show];
    [alert release];
}

 Xcodeでプロジェクトを保存し、[Command]-[r]キーを押してiPhoneシミュレータでアプリケーションをテストします。Buttonビューを押すと、メッセージが表示されるはずです(図8を参照)。

図8 アプリケーションの実行:ボタンを押すとメッセージが表示され、イベントハンドラが正しく実行されたことが分かる
図8 アプリケーションの実行:ボタンを押すとメッセージが表示され、イベントハンドラが正しく実行されたことが分かる

次のページ
新しいView Controllerの追加

この記事は参考になりましたか?

japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Wei-Meng Lee(Wei-Meng Lee)

Microsoft MVP受賞者。Microsoft社の最新テクノロジー実地研修を専門とするDeveloper Learning Solutions社を創設。.NETとワイヤレステクノロジーの開発者、指導者として知られる。国際的なカンファレンスでたびたび講演し、.NET、XML、ワイヤレステクノロジーに関す...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/4485 2009/11/02 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー