0

テーブルビューを作成し、uitableviewcellに2つのuitextviewを追加します。これは正常に機能しますが、ロード時にデータが完全なデータを表示しません。テーブルビューをスクロールするとデータがロードされます。データはセルに表示されます。 、およびテキストビューに柔軟なセル長を作成する方法を教えてください

  - (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

データのリロードを1日かけて試した後、ソリューションが didfinishLaunchingで追加したデータのスマートロードで同じ問題が発生しましたself.window.rootViewController = navController;

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

幸せなコーディング.. :)

于 2012-10-17T12:34:20.953 に答える
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

あなたのアプローチは十分ではないと思います。UITextView を UITableCell に追加しています。ブロック内にある必要があります: if (cell == nil)。カスタム UITableView を使用することをお勧めします。ここにチュートリアルがあり、UITableCell のサイズを維持するには、heightForRowAtIndexPathデリゲート メソッドを使用する必要があります。

于 2012-06-20T10:07:53.090 に答える
0

このコードはかなりずさんです。まず第一に、私はおそらくこれを完全にやり直すでしょう。このようにオンザフライでビューを追加するのではなく、カスタム UITableViewCell サブクラスを作成する方がよいでしょう。

現在のコードでは、IOS のテーブル セルを「再利用」する機能を削除して (誤って) 修正しようとしたように見えるものなど、さまざまな問題に遭遇します。これにより、特に行数が多い場合、アプリの速度が大幅に低下します。

したがって、カスタム UITableViewCell を使用するようにコードをリファクタリングしてください。それが最初のステップです。

再利用識別子を使用するように上記のコードを変更しますが、その場で不要なビューを追加しないようにします (それらはすべてカスタム テーブル ビュー セル クラスに追加する必要があります)。

その後、@ SenithilKumar が提案したメソッドを実装する必要があります。これにより、セルのサイズが変更され、すべてのテキストが収まるようになります。

于 2012-06-20T10:09:02.307 に答える