各行にクリックカウンターと行番号を表示する必要があるtableViewを開発しています。アプリケーションの初期化時に、各セルの初期クリックカウンター値は0でなければなりません。次に、ユーザーがセルをクリックするたびに、セル内のクリック カウンターの値を増やします。
私は26の固定行を取ります。添付画像のように tableData.plist ファイルを取得しました。
plist で self.dataArray を初期化しています。
ここで、didSelectRowAtIndexPath デリゲート メソッドで実装を行いたいと考えています。行がタップされた場合、その行のクリック カウンターがインクリメントされます。
- (void)viewDidLoad {
[super viewDidLoad];
NSString *path = [[NSBundle mainBundle] pathForResource:@"tableData" ofType:@"plist"];
self.dataArray = [NSMutableArray arrayWithContentsOfFile:path];//array initialized with plist
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [self.dataArray count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *kCustomCellID = @"MyCellID";
UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(160.0f, 2.0f, 30.0f, 20.0f)];//label for rowid
UILabel *label2 = [[UILabel alloc] initWithFrame:CGRectMake(160.0f, 24.0f, 30.0f, 30.0f)];//label for counter
label2.textColor = [UIColor grayColor];
UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:kCustomCellID];
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:kCustomCellID] autorelease];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
if([self.dataArray count]>indexPath.row)
{
label1.text = [[self.dataArray objectAtIndex:indexPath.row] objectForKey:@"Lable1"];
label2.text =[[self.dataArray objectAtIndex:indexPath.row] objectForKey:@"Lable2"];
}
else {
label1.text = @"";
label2.text =@"";
}
[cell.contentView addSubview:label1];
[cell.contentView addSubview:label2];
[label1 release];
[label2 release];
return cell;
}
#pragma mark -
#pragma mark Table view delegate
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
//implementation for row counter incrementer.
}