UITableView Cell高度不同

时间:2014-04-23 16:37:39

标签: ios objective-c uitableview

我需要一个具有不同单元格大小的UITableView。我的方法是使用字体。我已经找到了一个例子,但它没有像我希望的那样工作。 我认为我可以更改单元格的大小,但不会显示文本。

我的代码:

 - (void)viewDidLoad
{
    [super viewDidLoad];
    _quotes = [[NSMutableArray alloc] initWithObjects:
               @"Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.",
               @"At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.",
               @"Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.",
               @"Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam",
               @"At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.", nil];

    _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 460) style:UITableViewStylePlain];
    _tableView.dataSource = self;
    _tableView.delegate = self;

    [self.view addSubview: _tableView];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

#pragma mark - UITableViewDelegate methods

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    size = [[_quotes objectAtIndex:indexPath.row]
                   sizeWithFont:[UIFont systemFontOfSize:14]
                   constrainedToSize:CGSizeMake(200, CGFLOAT_MAX)];

    mytextView = [[UITextView alloc] initWithFrame:CGRectMake(10, 10, 200, size.height)];
    mytextView.font = [UIFont systemFontOfSize:14];

    mytextView.text = [_quotes objectAtIndex:indexPath.row];

    return size.height + 50;

}
#pragma mark - UITableViewDataSource methods

- (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section {
    return [_quotes count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    NSString* reuseIdentifier = @"Cell";
    cell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifier];

    if (nil == cell) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuseIdentifier];

        [cell addSubview:mytextView];

    }


    return cell;
}

提前致谢

2 个答案:

答案 0 :(得分:0)

此代码:

mytextView = [[UITextView alloc] initWithFrame:CGRectMake(10, 10, 200, size.height)];
mytextView.font = [UIFont systemFontOfSize:14];

mytextView.text = [_quotes objectAtIndex:indexPath.row];

应该进入- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 像这样:

if (nil == cell) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuseIdentifier];
    mytextView = [[UITextView alloc] initWithFrame:CGRectMake(10, 10, 200, size.height)];
    mytextView.font = [UIFont systemFontOfSize:14];
    mytextView.text = [_quotes objectAtIndex:indexPath.row];
    [cell addSubview:mytextView];

}

答案 1 :(得分:0)

mytextView = [[UITextView alloc] initWithFrame:CGRectMake(10, 10, 200, size.height)];

此代码不会“获取”您现有的textview,每次都会生成一个新的UITextView。这与您稍后要添加到单元格的文本视图相同。

相关问题