1

の画像を正しく設定する際に問題が発生UIButtonsしていUITableViewCellます。ストーリーボードで 4 つのボタンを持つカスタム セルを使用してギャラリー効果を作成し、Apple の LazyTableImages のサンプル コードのように ImageLoader デリゲートを使用してサーバーから画像をロードしています。ImageLoader から画像を正常に取得しています。問題は画像の設定です。

で画像を設定すると、UITableView cellForRowAtIndexPath画像が既に読み込まれている場合、またはデフォルトの画像である場合は、画像を適切に設定できます。

for (int i = 0; i < [posts count] && i < [galleryButtons count]; i++)
    {
        post = [posts objectAtIndex:i];
        UIButton *button = [galleryButtons objectAtIndex:i];

        [button setTag:post.userID];

        if (!post.userIcon)
        {

            if (tableView.dragging == NO && tableView.decelerating == NO)
            {
                loadFlag = YES;
            }
            [button setImage:[UIImage imageNamed:@"BtDefault.png"] forState:UIControlStateNormal];
        } else
        {
            [button setImage:post.userIcon forState:UIControlStateNormal];
        }
    }

if (loadFlag)
    {
        [self startIconDownload:posts forIndexPath: indexPath];
    }

ただし、デリゲートがImageDidLoad後でメソッドを呼び出すと、画像は変更されません。

- (void)postImageDidLoad:(NSIndexPath *)indexPath forColumn:(int)postColumn
{
ImageLoader *imageLoader = [imageDownloadsInProgress objectForKey:indexPath];
Post *post;

if (imageLoader != nil)
{
    UITableViewCell *cell = [timeLineTable cellForRowAtIndexPath:indexPath];


    if (timeLineStyle == 1) //Gallary Style
    {

        int index = (indexPath.row * 4) + postColumn;
        int buttonTag = 200 + postColumn + 1;
        NSLog(@"Button tag is %i", buttonTag);
        post = [currentPosts objectAtIndex:index];
        UIButton *galleryButton = (UIButton *)[cell viewWithTag:buttonTag];
        [galleryButton setImage:post.userIcon forState:UIControlStateNormal];

        UIImageView *imageTester = (UIImageView *)[cell viewWithTag:300];
        [imageTester setImage:post.userIcon];

        [timeLineTable reloadData];

        [cell setHighlighted:YES];

    } else  // Post Style
    {
        UIImageView *userImageView = (UIImageView*)[cell viewWithTag:101];
        UILabel *userNameLabel = (UILabel *)[cell viewWithTag:102];
        [userNameLabel setText:@"Image Loaded"];
        post = [currentPosts objectAtIndex:[indexPath row]];
        [userImageView setImage:post.userIcon];
    }

}
}

UIImageテスト用にセルに があることがわかります。これはうまく機能しています。上記の for ループを削除しても、このコードは正常に機能しますcellForRowAtIndexPath。問題は for ループがないことです。画像が既に読み込まれている場合、ボタン画像は設定されません。

ポインターが多すぎて が変更されないという問題があるかどうかはわかりませんUIButton。思いつくのはこれだけですが、StoryBoard とこのスタイルのカスタム セル操作についてはまったくの初心者です。助けてくれてありがとう。

4

1 に答える 1

1

上ではボタン タグを設定します[button setTag:post.userID];が、下ではタグを使用してボタンを取得します。int buttonTag = 200 + postColumn + 1;

于 2013-01-10T10:39:45.590 に答える