iPhoneアプリ:電卓をつくる その5

このエントリーを含むはてなブックマークはてなブックマーク - iPhoneアプリ:電卓をつくる その5

前回(iPhoneアプリ:電卓をつくる その4)はIBでインタフェースの設計を行ないました。今回はXcodeでプログラムを作成していきましょう。

CalcViewCOntroller.h

@interface Calc2ViewController : UIViewController {
	IBOutlet UILabel *label;
	BOOL startInput;
}
-(IBAction)numberButtonPressed:(id)sender;
-(IBAction)clearButtonPressed:(id)sender;
@end

ヘッダファイルでは、計算結果の表示を更新するため、UILabelへのアウトレットを宣言しています。また、テンキーが押されたときに呼ばれるnumberButtonPressed:メソッドとクリアキーが押されたときに呼ばれるclearButtonPressed:も宣言されています。

startInputの変数は、押されたキーが最初の1桁目かどうかを表す変数になります。この変数の意味は、実装ファイルを見るほうが分かりやすいでしょう。

CalcViewCOntroller.m

- (void)viewDidLoad {
    [super viewDidLoad];
	startInput = YES;
}

-(IBAction)numberButtonPressed:(id)sender
{
	UIButton *b = (UIButton *)sender;
	
	if( startInput ){
		// 最初の1桁目が0なら表示しない
		if( b.tag == 0 ) return;
		// 新しく表示する文字列を作成
		label.text = [NSString stringWithFormat:@"%d", b.tag];
		startInput =  NO;
	} else {
		// すでに表示されている文字列に連結
		label.text = [NSString stringWithFormat:@"%@%d", label.text, b.tag];		
	}
}

-(IBAction)clearButtonPressed:(id)sender
{
	label.text = @"0";
	startInput = YES;	
}

理解しやすい、viewDidLoadメソッドの中身から見ていきましょう。最初の1行目で親クラスの初期化を行っているのですが、これは後ほど説明します。2行目でstartInputを初期化しています。基本的に、初期化処理はviewDidLoadメソッドの中で行います。

次に、clearButtonPressed:(id)senderメソッドの中身を見ていきます。引数として与えられているsenderに押されたボタンのインスタンスが格納されています。この場合だとsenderはclearボタンのインスタンスになります。このメソッドでは、押されたボタンのインスタンス情報は使わないので、とりあえず無視しておきましょう。クリアボタンが押されたときは、画面の表示を0にし、入力待ち受け状態にするため、startInput変数をYESにしています。

さて、残るはnumberButtonPressed:メソッドだけです。引数のsenderには押されたボタンのインスタンスが格納されているため、1行目でキャストしてUIButtonのインスタンスを取り出しています。2行目以降では、押されたボタンに従って、今表示されている数字列に桁を付け加えていく処理をしています。付け加えるべき数字は、押されたボタンのインスタンスの中にあるTag情報(前回設定したもの)から得ます。startInputを用いて場合分けしているのは、1桁目(要するに一番上の位)に0がくるのを防ぐためです。

さて、最後にInterfaceBuilderに戻って、Outletを接続しましょう。Xcodeの左カラムからCalcViewController.xibをダブルクリックして、IBを起動します。CalcViewController.xibウインドウでFile’s Ownerを選択した状態で、インスペクタのconnectionタブを開きます。

calc15calc16

このConnectionウインドウからViewウインドウに向けて、全てのOutletsとActionsの接続を行ないます。まずはConnectionウインドウでlabelと書かれた行の右端の○からVIewウインドウのラベルへ、ドラックして接続してください。

また、clearButtonPressedとnumberButtonPressedも、各対応するボタンと接続を行ないます。numberButtonPressedはテンキー全てと接続してください。Outletsとは違い、D&Dして、ボタンを離すと下記のようなウインドウが開くかとおもいます。

calc17

ここでは、Touch Up Insideを選択してください。これを選択することで、キーから指が離れた瞬間に、指定した関数が駆動されるようになります。

さてここまでできたら、コンパイルして
うまく動作するかチェックしてみてください。

プログラムをココにおいておきます。
参考にしてみてください。
Calc3.zip

One Response to “iPhoneアプリ:電卓をつくる その5”

  1. [...] 前回(iPhoneアプリ:電卓をつくる その5)までのプログラムで、かなり電卓っぽくなってきましたが、まだ演算が出来ないのでした。今回は最終回なので演算まで出来るようにして、電卓プログラムを完成させましょう。 [...]

Leave a Reply

You must be logged in to post a comment.