单元格内容(Textview)仅在触摸单元格后更新

时间:2014-02-11 13:05:12

标签: ios iphone uitableview uitextview

我在里面创建了一个带UITextView的UITableViewCell。 我正在使用Json来获取Textview的Html内容。我也在使用DTCoreText。这是我cellForRowAtIndexPath:

的一部分
static NSString *CellIdentifier1 = @"NewsCell";

GTNewsCustomCell *newsCell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier1];

if(newsCell == nil){

    NSArray* nibViews = [[NSBundle mainBundle] loadNibNamed:@"GTNewsCustomCell"
                                                      owner:self//transfer ownership to self
                                                    options:nil];
    newsCell = [nibViews objectAtIndex:0];
}

newsCell.cellFrame = CGRectMake(10, 0, 300,40);

newsCell.titleLabel.text = [[self.newsList objectAtIndex:indexPath.section]objectForKey:@"title"];

newsCell.messageTextView.textColor = [UIColor blackColor];
newsCell.messageTextView.backgroundColor = GTDefaultTextBackgroundColor;
newsCell.messageTextView.editable = NO;
newsCell.messageTextView.userInteractionEnabled = NO;

newsCell.messageTextView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

NSString *htmlTag = @"<b></b>";
NSString *html = [NSString stringWithFormat:@"%@%@",htmlTag,[[self.newsList objectAtIndex:indexPath.section]objectForKey:@"previewMessage"]];


.
.
.

return newsCell;

问题是我的TextView的内容有时大于文本视图的大小。奇怪的是,当我触摸文本视图时,它会更新自己并且每个人都被证明是正确的......可能出错了什么?

以下是一些截图:

破碎的TextView: enter image description here

当我触摸Cell时,文本被格式化: enter image description here

修改 好吧,不,我找到了我的问题,但我不知道如何解决它。在我的自定义单元格.m文件中,我有一个更改单元格大小宽度的方法:

- (void)layoutSubviews
{
   [super layoutSubviews];
   CGRect cellRect = self.bounds;
   cellRect.size.width = self.cellFrame.size.width;

   self.bounds = cellRect; 
}

如果我删除这一切一切正常,但当然我的单元格已经没有正确的大小......但是我需要从TableView和Cell之间的左边和右边有一些空间!

2 个答案:

答案 0 :(得分:0)

好的,最后我解决了这个问题:我删除了“layoutSubviews”方法,并插入:

- (void)setFrame:(CGRect)frame {
    frame.origin.x += 10;
    frame.size.width -= 2 * 10;
    [super setFrame:frame];
}

现在我的文字总是有正确的尺寸,而我的细胞也有正确的尺寸!

答案 1 :(得分:0)

我一直认为最好不要试图篡改UITableViewCell的框架/范围。每个单元格的框架由UITableView设置,宽度等于表视图的宽度,高度等于表视图委托的tableView:heightForRowAtIndexPath:返回的值,或者如果没有实现,则表视图的rowHeight财产。

如果自定义单元格的内容(即子视图)不在您想要的位置,请在自定义layoutSubviews实现(或您的笔尖)中定位这些。这里可以选择自动布局。在您的示例中,您将布置单元格的messageTextView