このページは「iPhoneプログラミング入門」(工学社刊、ISBN 978-4-7775-1541-7)を読んで、もっと先へ進んでみたいと思った人への説明です。

次へ->
<-前へ
「次の一歩」一覧へ

「バーボタンアイテム」の利用2

BarButtonItemViewConttoller.hの編集

ラベルとアクションだけを宣言すればよい

ヘッダ・ファイル「BarButtonItemViewController.h」には、基本的には以下のものを設定すればいいだけです。
ただし、「showLabelの内容である文字列を受け取るshowString」というプロパティもあったほうがよいと思います。
大事なのは、「バーボタンアイテムのAddボタン」についての記述は要らないということです。あとで、インターフェイス・ビルダーで設定するからです。

編集部分

そこで、BarButtonItemViewController.hの重要な部分はリスト1のようになります。
リスト1 BarButtonItemViewController.h(主要な部分)
@interface BarButtonItemViewController : UIViewController {
	
	UILabel *showLabel;
	NSString *showString;
}

@property(nonatomic, retain) IBOutlet UILabel *showLabel;
@property(nonatomic, copy) NSString *showString; 

-(IBAction)addString:(id)sender;

@end

BarButtonItemViewController.mの編集

viewDidLoadメソッドの編集

この(ビューコントローラの)ビューが最初に読み込まれたときに、ラベルshowLabelの内容は「Ge」という文字列であるように設定しておきます。

アクション(メソッド)addStringの実装

機能を考えるときは「アクション」と呼びますが、文法的には「メソッド」です。addStringメソッドでは、ラベルshowLabelの内容をshowStringに受け取り、それに文字列「Ge」を付加したものでshowLabelの内容を定義しなおすという処理をします。まあ、アホな処理です。
「文字列に文字列を付加する」には、本書で用いたinitWithFormatメソッドを使います。
本書では、「整数を文字列に変換する」という目的で、以下のような用い方をしました。
initWithFormat:@"%d", 整数
「%d」は「ここに、指定する整数の数字を入れる」という意味です。「ここ」とは、「@"」と「"」で挟まれた間です。たとえば整数の値が234なら、%dが234になりますから、@"234"という文字列になります。

今回は、以下のような用い方をします。
initWithFormat:@"%@Ge", ラベルの内容
「%@」は「ここに、指定する文字列をそのまんま入れる」という意味です。「ここ」とは、「@"」と「Ge"」で挟まれた間です。たとえばラベルの内容がGeGeGeなら、%@がGeGeGeになりますから、@"GeGeGeGe"という文字列になり、Geが1個増えることになります。
Cなど他のプログラミング言語でこの方法を知っている人は、文字列を表すのはObjective-Cでは%@で、%sではありませんから、注意しましょう。

編集部分

そこで、BarButtonItemViewController.mの重要な部分はリスト2のようになります。
リスト2 BarButtonItemViewController.m(主要な部分)
@implementation BarButtonItemViewController

@synthesize showLabel;
@synthesize showString;

.........

- (void)viewDidLoad {
	showLabel.text=@"Ge";
    [super viewDidLoad];
}

........

-(IBAction)addString:(id)sender{
	showString=showLabel.text;
	NSString *addedString=[[NSString alloc] initWithFormat:@"%@Ge", showString];
	showLabel.text=addedString;
	[addedString release];	
}


- (void)dealloc {
	[showLabel release];
	[showString release];
    [super dealloc];
}

@end



最後に、プログラムに書いたプロパティやアクションを、インターフェイス・ビルダーの部品と結びつけます