私はに取り組んでいUITableView
ます。私のアプリでは、いくつかのデータを 2 つのセクションに表示する予定でcustom cell
、実際にcustomCell
は 2 がありUILabel
label1 & label2
ます。最初section
は表示するデータが単純なので問題ありませんが、表示する行が 4 行ある 2 番目のセクションを表示すると、3 行のうち表示する行がはるかに大きくstring
なります。そのラベルを表示するために、Cell と UILabel ビューの高さを増やしています。
セルの高さを増やすにはheightForRowAtIndexPath
、以下のようにメソッドを実装しました
- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (1 == indexPath.section && 0 != indexPath.row)
{
return _profileTableView.rowHeight + 50.0;
}
else
{
return _profileTableView.rowHeight;
}
}
メソッドの問題heightForRowAtIndexPath
は、3 行目と 4 行目のサイズだけが大きくなり、新しいフレームを label1 と label2 に設定しようとすると、変更が表示されないことです。ラベルがセル内で非常に下に表示されます。
これが私がメソッドを実装したcellForRowAtIndexPath
方法です
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
ISClientProfileCell *cell = nil;
cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
cell = (CustomCell *)[nib objectAtIndex:0];
cell.label1.font = [UIFont fontWithName:defaultFont size:18];
cell.label2.font = [UIFont fontWithName:defaultBoldFont size:18];
if(0 == indexPath.section)
{
// first section is fine
}
else
{
switch (indexPath.row)
{
case 0:
{
cell.label1.text = @"Data 1:";
[cell.label1 sizeToFit];
CGRect frame = cell.label1.frame;
frame.origin.y = 11;
cell.label1.frame = frame;
frame = cell.label2.frame;
frame.origin.x = cell.label1.frame.size.width + cell.label1.frame.origin.x+5;
frame.origin.y = 11;
cell.label2.frame = frame;
cell.label2.text = [[NSUserDefaults standardUserDefaults] valueForKey:key];
[cell.label2 sizeToFit];
break;
}
case 1:
{
cell.label2.numberOfLines = 5;
cell.label2.lineBreakMode = NSLineBreakByClipping;
cell.label1.text = @"Data 2:";
[cell.label1 sizeToFit];
CGRect frame = cell.label1.frame;
frame.origin.y = 11;
cell.label1.frame = frame;
frame = cell.label2.frame;
frame.origin.x = cell.label1.frame.size.width + cell.label1.frame.origin.x+5;
frame.origin.y = 11;
cell.label2.frame = frame;
cell.label2.text = [[NSUserDefaults standardUserDefaults] valueForKey:aKey];
[cell.label2 sizeToFit];
break;
}
case 2:
{
cell.label2.numberOfLines = 5;
cell.label2.lineBreakMode = NSLineBreakByClipping;
cell.label1.text = @"Data 2:";
[cell.label1 sizeToFit];
CGRect frame = cell.label1.frame;
frame.origin.y = 11;
cell.label1.frame = frame;
frame = cell.label2.frame;
frame.origin.x = cell.label1.frame.size.width + cell.label1.frame.origin.x+5;
frame.origin.y = 11;
cell.label2.frame = frame;
cell.label2.text = [[NSUserDefaults standardUserDefaults] valueForKey:bKey];
[cell.label2 sizeToFit];
break;
}
case 3:
{
cell.label2.numberOfLines = 5;
cell.label2.lineBreakMode = NSLineBreakByClipping;
cell.label1.text = @"Data 2:";
[cell.label1 sizeToFit];
CGRect frame = cell.label1.frame;
frame.origin.y = 11;
cell.label1.frame = frame;
frame = cell.label2.frame;
frame.origin.x = cell.label1.frame.size.width + cell.label1.frame.origin.x+5;
frame.origin.y = 11;
cell.label2.frame = frame;
cell.label2.text = [[NSUserDefaults standardUserDefaults] valueForKey:cKey];
[cell.label2 sizeToFit];
break;
}
}
}
return cell;
}
十分に検索しましたが、答えがありませんでした。助けてください。前もって感謝します。