-1

这是一个博客应用程序,我遇到的问题是帖子的布局及其评论。

理想情况下,布局应该是这样的(版本 1):

在此处输入图像描述

父级是 UIScrollView,您看到的所有其他元素都在其中。底部的 UITabelView 接收评论线程。

这可行,但问题在于评论 UITableView。我想我可以关闭它的滚动,让它根据评论的数量垂直“增长”。但是在几行之后,内容被剪裁了。这是因为剩余的行没有在 UIScrollView 的垂直大小内呈现。

我已经阅读了 SO 以取消 UIScrollView - 而是在 UITableView 中构建整个东西。在顶部创建一个自定义单元格以容纳 UIImageView,在下方创建另一个自定义单元格用于发布文本等。

版本 2

在此处输入图像描述

我的问题是:如何发送 JSON 提要的特定部分来填充自定义单元格,然后遍历填充下部单元格的注释?

例如,下面的代码将评论发送/迭代到版本 1 中的评论 UITableView。

但是我如何将发布图像或发布文本发送到版本 2 中的自定义单元格?

有更好的方法吗?非常感谢任何形式的建议。

DetailViewController.h

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

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

    NSDictionary *post           = self.detailItem;
    NSArray      *commentThread  = [post objectForKey:@"comment"];
    NSDictionary *comment        = [commentThread objectAtIndex:indexPath.row];

    NSString     *commentText       = [comment objectForKey:@"comment_text"];
    NSString     *commentAuthorName = [comment objectForKey:@"comment_author_name"];

    cell.textLabel.text       = commentText;
    cell.detailTextLabel.text = commentAuthorName;

    return cell;
}

JSON

...
{
    "post_id": "1463",
    "post_title": null,
    "post_text": "dffsdjdflkjklk dlfkjsdlfkj",
    "comment": [
        {
            "comment_author_name": "2162",
            "comment_text": "yuiyuiiopiop",
        },
        {
            "comment_author_name": "2163",
            "comment_text": "tyutyutyutyuu",
        },
        {
            "comment_author_name": "2164",
            "comment_text": "sdfsertertr",
        },
    ]
},
...
4

2 回答 2

0

是的,这是正确的,要么您只需在表视图中使用标题视图,我将示例取一个视图说 headerView 并在响应后将 imageView 放入其中,只需将图像放在 imageview 对象中,然后像这样加载表视图

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
   return self.headerView;

} 

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
  return 210;

}

然后使用上面使用的 cellForRowAtIndexPath 。

于 2012-10-20T22:00:28.200 回答
0

您可以将帖子文本和图像放入 tableViewHeader。

或将帖子文本和图像放在 tableView 部分 0

将评论放在第 1 部分

编辑

{
    [super viewDidLoad];

    UIImageView *imageView = [[UIImageView alloc] init];
    //config the image view

    UILabel *postContentLabel = [[UILabel alloc] init];//or other UI component
    //Config the postContentLabel

    UIView *tableHeaderView = [[UIView alloc] init];
    [tableHeaderView addSubview:imageView];
    [tableHeaderView addSubview:postContentLabel];
    //set the tableHeaderView frame

    self.tableView.tableHeaderView = tableHeaderView;
}
于 2012-10-20T18:47:27.710 回答