各行に 2 つの UILabel を持つ TableView があります。ユーザーがセルをスワイプすると、この問題を解決するために、セルの最初のラベルのフレームを縮小したいと思います:
これは私のコードです:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:NO] autorelease];
}
custom_cell = [[[UILabel alloc] initWithFrame:CGRectMake(10, 0, 200, 45)] autorelease];
custom_cell.textColor = [UIColor blackColor];
custom_cell.backgroundColor = [UIColor clearColor];
[custom_cell setText:[[self.Notes objectAtIndex:indexPath.row ]objectForKey:@"Text"]];
[cell.contentView addSubview:custom_cell];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat: @"dd MMM yy"];
[dateFormat setLocale:[NSLocale currentLocale]];
NSDate *dateTmp = [[self.Notes objectAtIndex:indexPath.row] objectForKey:@"CDate"];
cell.detailTextLabel.text = [dateFormat stringFromDate: dateTmp];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
[dateFormat release];
return cell;
}
次に、セルの最初のラベルのフレームを縮小するために、次のコードを記述しました。
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"row=%d", indexPath.row);
custom_cell.frame = CGRectMake(10, 0, 150, 45);
return UITableViewCellEditingStyleDelete;
}
結果は部分的に正しいです。私のtableViewの最後のラベルは、正しいものではなく、常に縮小されています。
また、コンソールは NSLog メッセージを 3 回出力します。なんで?
2012-06-13 22:07:34.809 myVoyager[1935:16103] row=0
2012-06-13 22:07:34.810 myVoyager[1935:16103] row=0
2012-06-13 22:07:34.813 myVoyager[1935:16103] row=0
ありがとう、ピサのアレッサンドロ(私の英語でごめんなさい!)