前回の続きです。
計算というボタンを押すと燃費計算をさせたいのでこのアクションを作成します。
つまり走行距離/給油量=燃費という計算をさせます。
これはMainStoryboard.storyboardから作成可能です。
右上のEditorというところのアイコンの真ん中にAssistant Editorといのが
ありますのでこれを押してソースファイルを開きます。(FuelViewConrtroller.h)
ViewControllerの計算ボタンをcontrolボタンを押しながらマウスで
@interface ~@endの間にドラッグします。

すると画面のようなポップアップメニューが現れます。
connection Action
Object Fuel View Controller
Name calc:
Type id
Event Touch Up Inside
Arguments Sender
としてconnectボタンを押します。
#import
@interface FuelViewController : UIViewController
- (IBAction)calc:(id)sender;
@end
となっているはずです。
なおFuelViewController.mには
- (IBAction)calc:(id)sender {
}
@end
が追加されています。
以上で計算ボタンとViewControllerを接続完了です。
次に走行距離と給油量のテキストフィールドと燃費というラベル間の関係を接続します。
他のKm、L、Km/Lは単なるラベルなので特に接続は必要ありません。
ボタンの接続と同様にまずは距離を入力するテキストフィールドをcontrolボタンを押しながら
@interface ~@endの間にドラッグします。
ポップアップメニューが現れますので
connection Outlet
Object Fuel View Controller
Name kyori
Type UITextField
Storage Weak
としてconnectボタンを押します。
同様に給油量を入力するテキストフィールドをドラッグします。
#import
@interface FuelViewController : UIViewController
@property (weak, nonatomic) IBOutlet UITextField *kyori;
@property (weak, nonatomic) IBOutlet UITextField *gas;
- (IBAction)calc:(id)sender;
@end
こんな感じになっているはずです。
なおFuelViewController.mには
@implementation FuelViewController
@synthesize kyori;
@synthesize gas;
が追加されています。
燃費というラベルの接続に取りかかります。
controlボタンを押しながら
@interface ~@endの間にドラッグします。
ポップアップメニューが現れますので
connection Outlet
Object Fuel View Controller
Name nenpi
Type UILabel
Storage Weak
としてconnectボタンを押します。
#import
@interface FuelViewController : UIViewController
@property (weak, nonatomic) IBOutlet UITextField *kyori;
@property (weak, nonatomic) IBOutlet UITextField *gas;
@property (weak, nonatomic) IBOutlet UILabel *nenpi;
- (IBAction)calc:(id)sender;
@end
こんな感じになっているはずです。
なおFuelViewController.mには
@implementation FuelViewController
@synthesize kyori;
@synthesize gas;
@synthesize nenpi;
となっているはずです。
次に行う事は走行距離と給油量のテキストフィールドをデリゲート接続を作成です。
またまた聞き慣れない「デリゲート」という言葉が出てきました。
後日この辺りはまとめようと思いますがとりあえず今の動作で言えば走行距離と給油量を
読み込んで燃費を計算させるためのものです。
言葉では難しいのですがXcodeではマウスのドラッグで作成できます。
FuelViewControllerSceneというのがリスト形式でありますのでここのTextFieldを
Viewの下の方のバーにある右側の黄色の円の中へcontrolを押しながらドラッグします。
kyoriとkyuuyuどちらとも行います。
なお黄色い円はViewControllerオブジェクトを表します。
ポップアップメニューがそれぞれ出てきますのでObjectsのdelegateにチェックを入れます。
さて次はいよいよ燃費計算結果を表示するプロパティを追加します。
ここからがちょっとソースコードを書かなければならないので難易度がやや上がります。
しっかりとマスターしましょう。
そして随分前に設定した燃費というラベルにcalc:というアクションを実装したかと思います。
このcalc:というアクションは走行距離と給油量をTextFieldから文字列を取得して
燃費の計算(燃費=走行距離/給油量)の結果を燃費というラベルに表示させるものです。
いよいよ最終仕上げです!
FuelViewController.mの中に
- (IBAction)calc:(id)sender {
}
という所があります。ここへ計算する式を記述します。
- (IBAction)calc:(id)sender {
double kyoridata=[[kyori text] intValue];//走行距離を取得
double gasdata = [[kyuuyu text] intValue];//給油量を取得
double nenpiD=kyoridata/gasdata;//燃費を計算
[nenpi setText:[NSString stringWithFormat:@"%1.2f", nenpiD]];//計算結果を燃費ラベルに表示する。
}
後はシュミレーターを走らせてみましょう。

やったー!完成です。
ちょっとソースコードを手修正した箇所があるので
FuelViewController.h
FuelViewController.m
のコードを下記へ記述します。
FuelViewController.h
#import
@interface FuelViewController : UIViewController
@property (weak, nonatomic) IBOutlet UITextField *kyuuyu;
@property (weak, nonatomic) IBOutlet UILabel *nenpi;
@property (weak, nonatomic) IBOutlet UITextField *kyori;
- (IBAction)calc:(id)sender;
@end
FuelViewController.m
#import "FuelViewController.h"
@interface FuelViewController ()
@end
@implementation FuelViewController
@synthesize kyuuyu;
@synthesize nenpi;
@synthesize kyori;
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)viewDidUnload
{
[self setKyori:nil];
[self setKyuuyu:nil];
[self setNenpi:nil];
[super viewDidUnload];
// Release any retained subviews of the main view.
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
- (IBAction)calc:(id)sender {
double kyoridata=[[kyori text] intValue];
double gasdata = [[kyuuyu text] intValue];
double nenpiD=kyoridata/gasdata;
[nenpi setText:[NSString stringWithFormat:@"%1.2f", nenpiD]];
}
@end
これでiPhoneアプリ開発奮闘記の第3章の幕を閉じます。
次の奮闘記はこのコードを元にちょっと難易度を上げたアプリを開発してAppstoreに申請したら書きたいと思いますので気長に待ってください(>_<) ○| ̄|_
ブログ一覧 |
MacBookAir | パソコン/インターネット
Posted at
2012/07/16 15:03:37