2012年7月3日火曜日

for文で一気にオブジェクトを作成する cocoa、iphoneアプリの作りかた

何かオブジェクトを作成するとき、


self.view1 = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
self.view1.backgroundColor = [UIColor clearColor];

self.view2 = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
self.view2.backgroundColor = [UIColor clearColor];

self.view3 = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
self.view3.backgroundColor = [UIColor clearColor];


こんな風におんなじようなコードをいくつも作成しなきゃいけない時があると思います。
ちょっとだけ表示させる位置が違うのに、
なんでおんなじようなものをいくつも書かなきゃいけないんだー!!
ってなりますよね。。

そこで、今回はfor文を使って、
簡単にオブジェクトを一気に作成する方法をご紹介します。

まずは気になるコードから。

------
//======テキスト部分(タイトル)の設定======
NSURL *url = [NSURL URLWithString:@"http:/had1.txt"];
NSStringEncoding usedEncoding;
NSError *error;
NSString *result = [NSString stringWithContentsOfURL:url usedEncoding:&usedEncoding error:&error];
if (result == nil) {
} else {
//一行づつ読み込んで処理する
NSArray *array = [result componentsSeparatedByString:@"\n"];

//表示位置を指定するための数値を用意
int boxdata = 60;

//ここから繰り返し処理
for (int i = 0; i < [array count]; i++) {

UITextView* labelname[i];
labelname[i] = [[UITextView alloc] initWithFrame:CGRectMake(90, boxdata, 220.0, 25.0)];
labelname[i].font = [UIFont fontWithName:@"HiraKakuProN-W6" size:14];
labelname[i].textAlignment = UITextAlignmentLeft;
labelname[i].editable = NO;
labelname[i].scrollEnabled = NO;
labelname[i].userInteractionEnabled = NO;
labelname[i].textColor = [UIColor colorWithRed:72/256.0 green:88/256.0 blue:89/256.0 alpha:1.0f];
labelname[i].backgroundColor =[UIColor whiteColor];
labelname[i].autoresizingMask = UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleHeight;
labelname[i].text = [array objectAtIndex:i];
[self.wv insertSubview:labelname[i] atIndex:1];

//表示位置をちょっとづつ変えていく
boxdata = boxdata + 61;
}
}

------


コードをみてもらえれば、
やっている事がすぐに分かると思うのですが、
一つ前のブログでご紹介した様に、
外部にアップしているテキストデータを読み込み、
改行ごとに、一列づつテキストデータを保存。

保存したテキストデータを、
配列を利用して、for文で順番にセットしています。

今回つまずいたのは、
オブジェクトの名前も配列のように
UITextView* labelname[i];で用意してあげること。

これで少しはコードを書く行数が節約できました!


0 件のコメント:

コメントを投稿