0

私の目標は、ライブラリからビデオを一覧表示し、各アイテムをタップして URL を取得することです。

写真ライブラリからすべてのビデオを取得し、textLabel を URL に設定しました。ただし、動画をタップすると、すべての動画が最後のセルにある動画の URL を NSLog アウトします。各動画の URL を実際に取得するにはどうすればよいですか? 何が問題だったのかわかりません。

これが私の(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath方法のいくつかの重要な行です:

    static NSString *CellIdentifer = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifer];
    if (cell == nil) {
        cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifer];
    }

    if (tableView.tag==0)
    {
        ALAsset *asset = [videoLibrary objectAtIndex:indexPath.row];
        videoURL = [[asset defaultRepresentation] url];
        UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
        tap.numberOfTapsRequired = 1;
        //here I am trying to print out the urls
        NSLog(@"-------- the url is: ---------");
        NSLog(@"%@", videoURL);
        [cell.textLabel setText:[NSString stringWithFormat:@"%d. %@", indexPath.row+1, videoURL]];
        [cell.imageView setImage:[UIImage imageWithCGImage:[asset thumbnail]]];
        //where the cells get the gesturerecognizer
        [cell addGestureRecognizer:tap];
    }
    else
    {
        [cell.textLabel setText:@"Show Resume"];
    }
    return cell;

そして、これは私のハンドラーメソッドです:

- (void)handleTap:(UITapGestureRecognizer *)sender
{
    [super self];
    if (sender.state == UIGestureRecognizerStateEnded) {
        NSLog(@"clicked! I can get url: [%@] here!", videoURL);
    }
}

コードのどこが間違っていたのですか?

よろしくお願いします。

4

1 に答える 1

1

メソッド- (void)handleTap:(UITapGestureRecognizer *)senderを次のように変更してください:

- (void)handleTap:(UITapGestureRecognizer *)sender
{
    if (sender.state == UIGestureRecognizerStateEnded) {
        UITableViewCell* cell = (UITableViewCell*)sender.view;
        NSLog(@"clicked! I can get url: [%@] here!", cell.textLabel.text);
    }
}
于 2013-04-19T12:41:12.637 に答える