0

我创建了一个表格视图,并在 uitableviewcell 中添加了两个 uitextview,它运行良好,但是当我加载时数据不显示完整数据,当我滚动表格视图时它加载,数据将显示在单元格中。所以任何人都可以告诉我。有什么问题,并告诉我如何为 textview 制作灵活的单元格长度

  - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

 static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier ];
     cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

    if (cell == nil) {
       cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    }

    RSSEntry *entry = [_allEntries objectAtIndex:indexPath.row];
    NSString *articleDateString = [dateFormatter stringFromDate:entry.articleDate];
    txtView1 = [[UITextView alloc]initWithFrame:CGRectMake(0, 10, 320,100)];
    txtView1.text =entry.articleTitle;
    txtView1.editable = NO;
    txtView1.font = [UIFont systemFontOfSize:20];
    txtView1.textColor = [UIColor blackColor];
    txtView1.delegate = self;
    txtView1.textAlignment = UITextAlignmentLeft;
    txtView1.scrollEnabled = NO;
      int a= entry.articleSummary.length;

  if(a < 100)

   {

    txtView2 = [[UITextView alloc]initWithFrame:CGRectMake(0, 70, 320, 100)];
    }
    else if(a <200) 
    {
       txtView2 = [[UITextView alloc]initWithFrame:CGRectMake(0, 70, 320, 300)]; 

    }
else

{

    txtView2 = [[UITextView alloc]initWithFrame:CGRectMake(0, 70, 320, 400)]; 
}

    txtView2.text = entry.articleSummary;
    txtView2.editable = NO;
    txtView2.font = [UIFont systemFontOfSize:16];    
    txtView2.textColor = [UIColor blackColor];
    txtView2.delegate = self;
    txtView2.textAlignment = UITextAlignmentLeft;

    [cell.contentView addSubview:txtView1];
    [cell.contentView addSubview:txtView2];
return cell;
}
4

4 回答 4

0

这段代码比较草率。首先,我可能会完全重新执行此操作。您最好创建一个自定义 UITableViewCell 子类,而不是像这样动态添加视图。

使用您当前的代码,您将遇到许多不同的问题,包括您似乎试图通过删除 IOS“重用”表格单元格的能力来修复(错误地)的一些问题。这将大大降低您的应用程序的速度,尤其是在有很多行的情况下。

因此,重构代码以便您使用自定义 UITableViewCell。这是第一步。

更改上面的代码,以便您现在使用重用标识符,但不要动态添加任何不必要的视图(它们都应该添加到自定义表格视图单元格类中)。

之后,您需要实现@SenithilKumar 建议的方法,这将调整单元格的大小以适合其中的所有文本。

于 2012-06-20T10:09:02.307 回答
0

根据您NSString sizeWithFont:constrainedToSize 重新调整UITableViewCell高度的大小:

- (CGFloat)tableView:(UITableView *)tableView 
           heightForRowAtIndexPath:(NSIndexPath *)indexPath
        {
    CGSize textSize = {245.0, 20000.0f};
    CGSize size1 = [text1 sizeWithFont:[UIFont systemFontOfSize:11.0f] 
                     constrainedToSize:textSize 
                         lineBreakMode:UILineBreakModeWordWrap];
    CGFloat hight = MAX(size1.height, 28);

            return hight;
}
于 2012-06-20T10:00:29.737 回答
0

经过一天的重新加载数据尝试后,我遇到了同样的问题,智能加载数据,解决方案 self.window.rootViewController = navController;在 didfinishLaunching 之后添加

UINavigationController *navController = [[UINavigationController alloc]initWithRootViewController:vc];
    [self.window addSubview:navController.view];

快乐编码.. :)

于 2012-10-17T12:34:20.953 回答
0

我认为你的方法不够好。您正在将 UITextView 添加到 UITableCell,它应该在 block:if (cell == nil)中。我更喜欢你使用自定义 UITableView。你会在这里找到一个教程,为了保持 UITableCell 的大小,你应该使用heightForRowAtIndexPath委托方法。

于 2012-06-20T10:07:53.090 回答