-1

これはブログ アプリ用であり、私が抱えている問題は、投稿とそのコメントのレイアウトにあります。

理想的には、レイアウトは次のようになります (バージョン 1):

ここに画像の説明を入力

親は UIScrollView であり、表示される他のすべての要素はその中にあります。下部の UITabelView は、コメント スレッドを受け取ります。

これは機能しますが、問題はコメント UITableView にあります。スクロールをオフにして、コメントの数に基づいて垂直方向に「成長」させることができると思いました。しかし、数行の後、コンテンツが切り取られます。これは、残りの行が UIScrollView の垂直サイズ内でレンダリングされていないためです。

私はUIScrollViewを廃止するためにSOを読みました-代わりに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

投稿テキストと画像を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 に答える
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 に答える