2

私は初心者プログラマーです。すでに夜は問題を解決しようとしましたが、うまくいきませんでした。情報の内容に基づいてセルのサイズを動的に変更しようとしています。例を挙げてください、しかし私のプログラムのスタートアップは死にます。エラーあり:

 'Terminating app due to uncaught exception 'NSInvalidArgumentException', 
reason: '-[__NSDictionaryI sizeWithFont:constrainedToSize:lineBreakMode:]"     

私は何が間違っているのですか?これが私のコードです:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] ;
    }

    NSDictionary *newsItem = [news objectAtIndex:indexPath.row];

    cell.textLabel.text = [newsItem objectForKey:@"title"];

    cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
    cell.textLabel.numberOfLines = 0;

    cell.detailTextLabel.text = [newsItem objectForKey:@"pubDate"];
    return cell;
}


- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *cellText = [news objectAtIndex:indexPath.row];
    UIFont *cellFont = [UIFont fontWithName:@"Helvetica-Bold" size:20.0f];
    CGSize constraintSize = CGSizeMake(320.0f, MAXFLOAT);

    CGSize labelSize = [cellText sizeWithFont:cellFont
                            constrainedToSize:constraintSize
                                lineBreakMode:UILineBreakModeWordWrap];

    return labelSize.height + 20.0f;
}
4

1 に答える 1

5

配列にはnews、文字列ではなく辞書が含まれているようです。したがって、tableView:heightForRowAtIndexPath:実際NSString* cellTextにはNSDictionary*.

次のようにobjectForKey:呼び出しを追加するだけです。objectAtIndex:

NSString *cellText = [[news objectAtIndex:indexPath.row] objectForKey:@"title"];
于 2013-01-15T21:12:18.580 に答える