2015-10-15 4 views
0

Я создал пользовательскую ячейку в iOS. На пользовательских ячейках я добавил 5 кнопок. При нажатии кнопки я делаю сетевой запрос &, когда запрос сделан, я хочу изменить фоновое изображение кнопки. Для создания нажата кнопка Я добавил IBOutlet каждой кнопки & Я добавил тег каждой кнопки в качестве indexpath.row.Как получить кнопку из ячейки в UITableView в iOS?

cell.btn_like.tag=indexPath.row; 

После этого у меня есть метод слушателя, как:

- (IBAction)tapped_liked:(id)sender 
{ 
    if([self isNetworkConnected]) 
    { 
     [self makeLikePost:(int)[sender tag]]; 

    } 
    else 
    { 
     UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Warning" message:@"No Internet Connection" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil]; 
     [alert show]; 

    } 
    NSLog(@"tapped liked %ld",(long)[sender tag]); 
} 

makeLikePost на метод я делаю следующее.

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:cellIndex inSection:1]; 

    HomeCell *cell = [self.table_view 

         dequeueReusableCellWithIdentifier:@"homeCell" 

         forIndexPath:indexPath]; 

    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 

    NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys: 

          user_post.id, @"post_id", nil]; 

    NSLog(@"post id is %@",user_post.id); 

    [manager.requestSerializer setValue:api_key forHTTPHeaderField:@"Authorization"]; 

    [manager POST:url parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) 

    { 

     NSLog(@"JSON: %@", responseObject); 


     [cell.btn_like setBackgroundImage:[UIImage imageNamed:@"sel_like.png"] forState:UIControlStateNormal]; 

    } 
      failure:^(AFHTTPRequestOperation *operation, NSError *error) 

    { 
    }]; 
+0

, но я не в состоянии получить кнопку. – Techiee

+0

Вы пробовали при отправке на главный блок очереди? –

+0

Как я могу получить кнопку для каждой ячейки, которую я нажал, чтобы изменить фоновое изображение кнопки. – Techiee

ответ

0

Сначала получите кнопку из ячейки через тег.

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:cellIndex inSection:1]; 

HomeCell *cell = [self.table_view 

        dequeueReusableCellWithIdentifier:@"homeCell" 

        forIndexPath:indexPath]; 

UIButton *btn = (UIButton*)[cell viewWithTag:IndexPath.row]; 

// В вашем блоке завершения ..

[btn setBackgroundImage:[UIImage imageNamed:@"sel_like.png"] forState:UIControlStateNormal]; 

надеюсь, что он будет работать для вас.

+0

Не работает для меня – Techiee

0

Try with this change

HomeCell *cell = [self.table_view dequeueReusableCellWithIdentifier:@"homeCell" forIndexPath:indexPath]; 

С

HomeCell *cell = [self.table_view cellForRowAtIndexpath:indexPath]; 
+0

Привет, я проверил ваш код. Это не работает нормально. Я создал массив, в котором я сохранил путь указателя для каждой ячейки. Я получаю путь индекса по передавая индекс строки и получаю индексный путь – Techiee

3
- (IBAction)likeButtonClicked:(id)sender 

{ 

    UIButton *button = (UIButton *)sender; 
    CGPoint buttonPosition =[sender convertPoint:CGPointZero toView:self.tableviewname]; 
    NSIndexPath*indexPath =[self.tableviewname indexPathForRowAtPoint:buttonPosition]; 
    customCellName *cell = (customCellName*)[toView:tableviewname cellForRowAtIndexPath:indexPath]; 
    //CGPoint = [button convertPoint:CGPointZero toView:tableviewname]; 

    // NSIndexPath *indexPath = [toView:tableviewname indexPathForRowAtPoint:rootPoint]; 

    //and from here you can access of any view inside cell using this cell object 

    //some thing like cell.your button name 
} 

Надеется, что это поможет вам :)

+0

Тем не менее, я не могу получить кнопку на конкретной ячейке. Пожалуйста, скажите мне, как я могу получить кнопку. – Techiee

+0

Вы можете нажать кнопку на каждой ячейке вправо? –

+0

Для чего вам нужна кнопка, чтобы изменить изображение нажатой кнопки на определенной ячейке? –

Смежные вопросы