0

テーブルビューの各セル内にスクロールビューがありますが、スクロールビューに埋め込まれた写真は、テーブルビューを上下にスクロールするまで表示されません...スクロールビューとセルの @property を持つカスタムクラスがあります。cellForRowAtIndexPath: メソッドでスクロールビューを設定するためのコードがあります。これは、セルの最初の作成時にも呼び出す必要がありますか? よくわかりません。

この問題を解決して、アプリを起動したときに最初に画像が表示されるようにするにはどうすればよいですか?

関連コード:

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

    CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];

    if (cell == nil) {
        cell = [[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellID];
    }

    for (int i = 0; i < [imageArray count]; i++) {
        CGRect frame;
        frame.origin.x = cell.scrollView.frame.size.width * i;
        frame.origin.y = 0;
        frame.size = cell.scrollView.frame.size;

        UIImageView *imageView = [[UIImageView alloc] initWithFrame:frame];
        imageView.image = [UIImage imageNamed:[imageArray objectAtIndex:i]];
        [cell.scrollView addSubview:imageView];
    }

    cell.scrollView.contentSize = CGSizeMake(cell.scrollView.frame.size.width * [imageArray count], cell.scrollView.frame.size.height);

    return cell;
}
4

1 に答える 1

1

これはあなたの質問とは正確には関係ありませんが、この問題にも遭遇します:

細胞は再利用されることを忘れないでください。再利用時 (ユーザーが下にスクロールすると、セルが画面から上に移動し、次に下に表示されるのは、物理的に消えて再利用された CustomCell のインスタンスになるとします。)

したがって、次を追加します。

   for (UIView *aView in [NSArray arrayWithArray:cell.subviews]) {
       [aView removeFromSuperview];
       // if you don't arc then release them and take care of their subviews - if any. 
   }

新しい UIImageView を追加する前に。(サブビューを一括で削除する方法もあると思ったのですが見つけられませんでした)

于 2013-07-28T09:35:50.513 に答える