2012-04-17 7 views
0

레이블 및 단추가있는 사용자 지정 tableView를 만들었습니다. 버튼을 셀에서 클릭하면 해당 셀의 레이블 텍스트 만 변경하려고합니다. 내 문제는 다른 셀의 해당 레이블도 변경 될 때입니다. 여기에 내 코드해당 셀의 단추를 클릭 할 때 사용자 지정 셀의 레이블 텍스트를 변경하는 방법

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 
static NSString *[email protected]"CellIdentifier"; 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: CellIdentifier]; 

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





     UILabel *labelOne = [[UILabel alloc]initWithFrame:CGRectMake(70, 10, 100, 20)]; 
     labelOne.tag = 100; 
     labelOne.backgroundColor=[UIColor clearColor]; 
     labelOne.font=[UIFont systemFontOfSize:14]; 
     [cell.contentView addSubview:labelOne]; 
     [labelOne release]; 

     UIButton *minusbutton=[[UIButton alloc]initWithFrame:CGRectMake(152, 5, 15, 20)]; 

     minusbutton.backgroundColor=[UIColor clearColor]; 
     [minusbutton addTarget:self action:@selector(DecreaseTickets:) forControlEvents:UIControlEventTouchUpInside]; 
     [minusbutton setTitle:@"-" forState:UIControlStateNormal]; 
     [minusbutton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 
     [minusbutton setBackgroundImage:[UIImage imageNamed:@"button-green1.png"] forState:UIControlStateNormal]; 
     [cell.contentView addSubview:minusbutton]; 
     [minusbutton release]; 


     UILabel *quantity = [[UILabel alloc]initWithFrame:CGRectMake(170, 5, 20, 20)]; 
     quantity.tag = 103; 
     quantity.backgroundColor=[UIColor clearColor]; 
     quantity.font=[UIFont systemFontOfSize:12]; 
     [cell.contentView addSubview:quantity]; 
     [quantity release]; 

     UIButton *addbutton=[[UIButton alloc]initWithFrame:CGRectMake(192, 5, 15, 20)]; 

     addbutton.backgroundColor=[UIColor clearColor]; 
     [addbutton addTarget:self action:@selector(IncreaseTickets:) forControlEvents:UIControlEventTouchUpInside]; 
     [addbutton setTitle:@"+" forState:UIControlStateNormal]; 
     [addbutton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 
     [addbutton setBackgroundImage:[UIImage imageNamed:@"button-green1.png"] forState:UIControlStateNormal]; 
     [cell.contentView addSubview:addbutton]; 
     [addbutton release]; 


     UILabel *labelTwo = [[UILabel alloc]initWithFrame:CGRectMake(260, 10, 140, 20)]; 
     labelTwo.tag = 101; 
     labelTwo.backgroundColor=[UIColor clearColor]; 
     labelTwo.font=[UIFont systemFontOfSize:14]; 
     labelTwo.textColor=[UIColor colorWithRed:0.25098 green:0.447059 blue:0.07451 alpha:1]; 
     [cell.contentView addSubview:labelTwo]; 
     [labelTwo release]; 


     UILabel *label3 = [[UILabel alloc]initWithFrame:CGRectMake(70, 30, 230, 30)]; 
     label3.tag = 102; 
     label3.backgroundColor=[UIColor clearColor]; 
     label3.numberOfLines=2; 
     label3.font=[UIFont systemFontOfSize:12]; 
     [cell.contentView addSubview:label3]; 
     [label3 release]; 


} 


    UILabel *labelOne = (UILabel *) [cell.contentView viewWithTag:100]; 
    NSString *ss2=[[NSString alloc]initWithFormat:@"%@",[[eventTicketListArray objectAtIndex:indexPath.row ]tit] ]; 

    labelOne.text = ss2;  

    UILabel *labelTwo = (UILabel *) [cell.contentView viewWithTag:101]; 
    labelTwo.text = [[NSString alloc]initWithFormat:@"%@",[[eventTicketListArray objectAtIndex:indexPath.row ]price] ]; 

    UILabel *label3 = (UILabel *) [cell.contentView viewWithTag:102]; 
    label3.text=[[NSString alloc]initWithFormat:@"%@",[[eventTicketListArray objectAtIndex:indexPath.row ]desc ] ]; 

    UILabel *label4 = (UILabel *) [cell.contentView viewWithTag:103]; 
    label4.text=[[NSString alloc]initWithFormat:@"%d",qty]; 
} 


return cell; 

}

Initially qty=0 

지금 내가 원하는이다 내가 addbutton, 그 세포 증가의 수량을 클릭하면 그. 여기 내 버튼 클릭 이벤트

-(void)IncreaseTickets:(id)sender{ 

NSIndexPath *indexPath =[ticketTable indexPathForCell:(UITableViewCell *)[[sender superview] superview]]; 

//NSUInteger row = indexPath.row; 
    UITableViewCell *currentCell = (UITableViewCell *)[[sender superview] superview] ; 

UILabel *label4 = (UILabel *) [currentCell.contentView viewWithTag:103]; 
label4.text=[[[NSString alloc]initWithFormat:@"%d",qty++] ; 

//NSLog(@"%d",row); 

[ticketTable reloadData]; 

}

하지만 난 모든 세포 증가의 버튼을, 수량을 클릭했을 때 문제입니다. 어떻게하는지 안내 해줘. 어떤 도움을 주시면 감사하겠습니다. 당신이 전화

+1

단추와 레이블이있는 사용자 지정 셀을 작성하는 것이 좋습니다. 그런 다음 셀은 단추 누르기를 처리하고 대리자를 사용하여 컨트롤러에 다시 신호를 보냅니다. –

답변

0

[ticketTable reloadData]; 

모든 데이터를 다시로드와 테이블을 다시

UITable 마법 몇 할당 세포 (필요한 셀의 바로 최연소 번호의 재사용에 초기화 : 표시 가능한 세포 화면에서 시간) 다음 일반적으로 테이블 데이터 대리자에서 NSArray를 사용하여 일반적으로 새 데이터 설정을 사용하여 스크롤해야합니다.

및 : 여기서 qty는 정의 되었습니까?

당신이

0

설정 조건이 같은 일부 사과 예제 코드 또는 일부 자습서를 읽고 .. 글로벌 변수 NSUInteger myRow에 세트를 더 나은 거라고 ...이 전역 변수가 아닌 모든 단일 셀 하나 보인다 .

myRow = indexPath.row;//Set Selected index path. 

in cellForRowAtIndexPath 설정 조건.

if(myRow == indexPath.row) 
{ 
    NSUInteger newqty = qty + 1; 
    UILabel *label4 = (UILabel *) [cell.contentView viewWithTag:103]; 
    label4.text=[[NSString alloc]initWithFormat:@"%d",newqty]; 
} 
esle 
{ 
    UILabel *label4 = (UILabel *) [cell.contentView viewWithTag:103]; 
    label4.text=[[NSString alloc]initWithFormat:@"%d",qty]; 
    } 

일부 논리를 설정합니다.

관련 문제