iProgrammer
iProgrammer

Reputation: 3107

UITable view button.tag to get value of row

I am having Tableview which shows comments on facebook post. I am getting comments in Array and comments Id in second array ..I have taken one uibutton in tableview cell. on that button I want to get comment id of particular comment so that I can pass that id to like method..But It is always taking id Of last comment..How can I ID of comment on Button.tag property,, My code is :

    - (NSInteger)tableView:(UITableView *)atableView numberOfRowsInSection:(NSInteger)section {

        return [[facebook comments] count];
    }


    - (UITableViewCell *)tableView:(UITableView *)atableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

        static NSString *CellIdentifier = @"Cell";

        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

        if (cell == nil) {
            cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
        }

    like = [UIButton buttonWithType:UIButtonTypeRoundedRect];

        like.frame = CGRectMake(60, 70, 40, 20);

        [like setTitle:@"like" forState:UIControlStateNormal];
        [like setTag:indexPath.row];
        [like addTarget:self action:@selector(likeComment) forControlEvents:UIControlEventTouchUpInside];

        [cell.contentView addSubview:like];

        ;


        cell.textLabel.font = [UIFont fontWithName:@"Arial" size:10.0];

        cell.detailTextLabel.font = [UIFont fontWithName:@"Arial" size:12.0];

        cell.textLabel.text = [[facebook commentId]objectAtIndex:indexPath.row];    

        cell.detailTextLabel.text = [[facebook comments]objectAtIndex:indexPath.row];

        NSLog(@"%@ person like this",[facebook likesCount] );


        NSLog(@"%@ person like this comment",[facebook commentLikes]);



        return cell;
    }

    - (void )likeComment {

        NSString *idStr = [NSString stringWithFormat:@"%@/likes",[[facebook commentId]objectAtIndex:like.tag]];



        [fbGraph doGraphPost:idStr withPostVars:nil];   

        UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"You like this"
                                                       message:@"" delegate:nil
                                             cancelButtonTitle:@"Ok" otherButtonTitles:nil ];

        [alert show];
        [alert release];




}

Please help

Upvotes: 0

Views: 219

Answers (1)

Jhaliya - Praveen Sharma
Jhaliya - Praveen Sharma

Reputation: 31722

The problem, which you are facing because you are always using the last like button.

You require to make few changes, Append an in the function name like likeComment:.

    [like addTarget:self action:@selector(likeComment:) forControlEvents:UIControlEventTouchUpInside];

And modify your likeComment method like below.

- (void )likeComment:(id) sender {

        UIButton* myLikeButton = (UIButton*)sender;
        NSString *idStr = [NSString stringWithFormat:@"%@/likes",[[facebook commentId]objectAtIndex:myLikeButton.tag]];



        [fbGraph doGraphPost:idStr withPostVars:nil];   

        UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"You like this"
                                                       message:@"" delegate:nil
                                             cancelButtonTitle:@"Ok" otherButtonTitles:nil ];

        [alert show];
        [alert release];
}

Upvotes: 1

Related Questions