我是iphone app Development的新手。我两个星期以来一直在遭遇这个问题。
我在xib中的uiviewcontroller类中使用搜索栏创建了uitableview。我正在使用自定义单元格显示表格视图。在自定义单元格中,我创建了uistepper,三个标签和xib中的图像。在这里,我正在显示图像和标签,以显示字典中的个人资料图像和文本。 自定义单元格中+和 - 功能的步进器。现在我想在标签中显示步进器动作。当我点击+按钮时,单击时标签计数将为1 - 按钮计数将在同一单元格中为0。我想要显示按钮计数在同一个单元格中。
任何人都可以帮助我......
感谢所有......
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"ListOfProductsCell";
ListOfProductsCell *cell = (ListOfProductsCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"ListOfProductsCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
productItemDit=[productListArry objectAtIndex:indexPath.row];
NSString *offerStr= [NSString stringWithFormat:@"%.2f",[[productItemDit objectForKey:@"offer"] floatValue]];
NSString *fullCostStr=[[currencyCodeStr stringByAppendingString:@" "] stringByAppendingString:offerStr];
NSLog(@"%@",fullCostStr);
cell.itemCostLbl.text=fullCostStr;
cell.itemStepper.tag=166;
cell.itemAddedLbl.tag=122;
cell.itemImg.image = [UIImage imageNamed:@"profp.jpg"];
}
if (tableView == self.searchDisplayProduct.searchResultsTableView) {
searchProductItemDit=[searchProductListArry objectAtIndex:indexPath.row];
NSLog(@"searchdit:%@",searchProductItemDit);
cell.itemNameLbl.text= [searchProductItemDit objectForKey:@"name"];
self.searchDisplayProduct.searchResultsTableView.separatorColor=[UIColor colorWithRed:200.0 green:0.0 blue:0.0 alpha:1.0];
} else {
productItemDit=[productListArry objectAtIndex:indexPath.row];
NSLog(@"dit:%@",productItemDit);
cell.itemNameLbl.text=[productItemDit objectForKey:@"name"];
}
cell.itemAddedLbl =(UILabel*)[cell viewWithTag:122];
cell.itemAddedLbl.text = [[NSString alloc] initWithFormat:@"%d",itemCount];
return cell;
}
ListOfProducts.m
//this method in custom class to get stepper action
-(IBAction)itemValueChanged:(UIStepper *)sender
{
ListOfProductsCell *clickedCell = (ListOfProductsCell *)[[sender superview] superview];
double stepperValue = itemStepper.value;
itemAddedLbl=(UILabel*)[clickedCell viewWithTag:122];
itemAddedLbl.text=[[NSString alloc] initWithFormat:@"%.f", stepperValue];
}
当我在上面使用它完美的工作时。但是当滚动表格视图时,我从步进器添加的值消失了
答案 0 :(得分:1)
使用此按钮添加自定义按钮或标签并为其指定标签i.e. indexpath.row
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}
// Add Custom Button
cellLikeBtn=[[UIButton alloc]init];
cellLikeBtn.frame=CGRectMake(262, 5, 48,62);
cellLikeBtn.backgroundColor=[UIColor whitecolor];
cellLikeBtn.tag=indexPath.row;
[cellLikeBtn addTarget:self action:@selector(Checktag:) forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:cellLikeBtn];
[cellLikeBtn release];
}
现在您将获得自定义标签或按钮的标记。您可以对其进行更改。
-(IBAction)Checktag:(UIButton *)sender
{
NSLog(@"%d",sender.tag);
UIButton* button = (UIButton *) sender;
UIImage *image = [UIImage imageNamed:@"abc.png"];
[button setImage:image forState:UIControlStateNormal];
}
在您的情况下用标签替换按钮。
我希望这能解决问题。
您可以按如下方式使用:
在cellforRowAtIndexPath上分配您的方法,就像那样
[cell.contentView addTarget:self action:@selector(Checktag:event:)forControlEvents:UIControlEventTouchUpInside];
- (void)Checktag:(id)sender event:(id)event
{
NSSet *touches = [event allTouches];
UITouch *touch = [touches anyObject];
CGPoint currentTouchPosition = [touch locationInView:self.tableView];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint: currentTouchPosition];
NsLog("value of indePath.section %d ,indexPath.row %d",indexPath.section,indexPath.row);
}
答案 1 :(得分:0)
使用此代码作为参考。根据您的要求对此代码进行更改。我编辑了你的代码,并试图不做大的改动。但严重的是你的代码不清楚和混乱。您可以清理代码并使其更好。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"ListOfProductsCell";
ListOfProductsCell *cell = (ListOfProductsCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[NSBundle mainBundle] loadNibNamed:@"ListOfProductsCell" owner:self options:nil]objectAtIndex:0];
}
productItemDit=[productListArry objectAtIndex:indexPath.row];
NSString *offerStr= [NSString stringWithFormat:@"%.2f",[[productItemDit objectForKey:@"offer"] floatValue]];
NSString *fullCostStr=[[currencyCodeStr stringByAppendingString:@" "] stringByAppendingString:offerStr];
NSLog(@"%@",fullCostStr);
cell.itemCostLbl.text=fullCostStr;
cell.itemStepper.tag=indexPath.row+indexPath.section+1;
cell.itemAddedLbl.tag=indexPath.row+indexPath.section+101;
cell.itemImg.image = [UIImage imageNamed:@"profp.jpg"];
if (tableView == self.searchDisplayProduct.searchResultsTableView) {
searchProductItemDit=[searchProductListArry objectAtIndex:indexPath.row];
NSLog(@"searchdit:%@",searchProductItemDit);
cell.itemNameLbl.text= [searchProductItemDit objectForKey:@"name"];
self.searchDisplayProduct.searchResultsTableView.separatorColor=[UIColor colorWithRed:200.0 green:0.0 blue:0.0 alpha:1.0];
} else {
productItemDit=[productListArry objectAtIndex:indexPath.row];
NSLog(@"dit:%@",productItemDit);
cell.itemNameLbl.text=[productItemDit objectForKey:@"name"];
}
cell.itemAddedLbl =(UILabel*)[cell viewWithTag:indexPath.row+indexPath.section+1];
cell.itemAddedLbl.text = [[NSString alloc] initWithFormat:@"%d",itemCount];
return cell;
}
-(IBAction)itemValueChanged:(UIStepper *)sender
{
ListOfProductsCell *clickedCell = (ListOfProductsCell *)[[sender superview] superview];
itemAddedLbl=(UILabel*)[clickedCell viewWithTag:sender.tag+100];
double stepperValue = sender.value;
itemAddedLbl.text=[[NSString alloc] initWithFormat:@"%.f", stepperValue];
}