奇怪的事情发生在我的桌面视图中

时间:2011-11-30 03:55:51

标签: iphone ios uitableview uibutton uilabel

我有一个表格视图。我最初使用单元格的textLabel来处理这个,但是没有用,所以我以编程方式为每个单元格添加了一个UILabel,我有两个按钮,一个添加按钮和一个减法按钮,按下时基本上向上或向下计数。 (上升或下降1)两个按钮的方法是:

 - (IBAction)addLabelText:(id)sender{    
   cellLabel.text = [NSString stringWithFormat:@"%d",[cellLabel.text intValue] +1];

}  

- (IBAction)subtractLabelText:(id)sender
{
    if ( [[cellLabel text] intValue] == 0){ 
        cellLabel.text = [NSString stringWithFormat:@"%d",[cellLabel.text intValue] +0];
    }
    else{
        cellLabel.text = [NSString stringWithFormat:@"%d",[cellLabel.text intValue] -1];
    }
}

当我按下按钮并添加了多个单元格时,按钮会干扰彼此的标签。所以我将这行代码添加到上述每种方法中。 :

    cellLabel = (UILabel*)[sender superview];    

希望它能解决这个问题。但它实际上添加了我相信细胞textLabel再次。这是我按下其中一个按钮并添加新行之前和之后的照片。

enter image description here

后:

enter image description here

任何帮助修复按钮干扰彼此细胞UILabel的请帮助!! :D谢谢

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil)
     {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
         newBtn = [[UIButton alloc]init];
         newBtn=[UIButton buttonWithType:UIButtonTypeRoundedRect];
         [newBtn setFrame:CGRectMake(280,10,25,55)];
         [newBtn addTarget:self action:@selector(subtractLabelText:) forControlEvents:UIControlEventTouchUpInside];
         [newBtn setTitle:@"-" forState:UIControlStateNormal];
         [newBtn setEnabled:YES];
         [cell addSubview:newBtn];

         subBtn = [[UIButton alloc]init];
         subBtn=[UIButton buttonWithType:UIButtonTypeRoundedRect];
         [subBtn setFrame:CGRectMake(250,10,25,55)];
         [subBtn addTarget:self action:@selector(addLabelText:) forControlEvents:UIControlEventTouchUpInside];
         [subBtn setTitle:@"+" forState:UIControlStateNormal];
         [subBtn setEnabled:YES];
         [cell addSubview:subBtn];

         cellLabel = [[UILabel alloc]init];
         [cellLabel setFrame:CGRectMake(85, 22, 27, 27)];
         [cellLabel setText:@"1"];
         [cell addSubview:cellLabel];**
    } 
    [cell setSelectionStyle:UITableViewCellSelectionStyleNone];
    cell.imageView.image = [imageArray objectAtIndex:indexPath.row];    
   // cell.textLabel.text = [cells objectAtIndex:indexPath.row];
    **if ([cell.imageView.image  isEqual:[UIImage imageNamed:@"paddle5.png"]]) {
        [cellLabel setFrame:CGRectMake (195, 22, 30, 30)];
    }
    if ([cell.imageView.image  isEqual:[UIImage imageNamed:@"paddle4.png"]]) {
        [cellLabel setFrame:CGRectMake (170, 22, 30, 30)];
    }
    if ([cell.imageView.image  isEqual:[UIImage imageNamed:@"paddle3.png"]]) {
        [cellLabel setFrame:CGRectMake (140, 22, 30, 30)];
    }
    if ([cell.imageView.image  isEqual:[UIImage imageNamed:@"paddle2.png"]]) {
        [cellLabel setFrame:CGRectMake (110, 22, 30, 30)];
    }**
return cell;
}

2 个答案:

答案 0 :(得分:1)

[sender superview]返回UIButton的超级视图,UITutView也是text属性的UITableViewCell,这就是为什么你的代码仍然运行正常,即使你输错了。

向我们展示你如何构建和添加cellLabel,以便我们可以看到它的错误。

答案 1 :(得分:1)

将标签设置为单元格,以便您将其设置为: 在我的表中,我在每个部分都有一些部分和一些单元格。因此,来自第一个(0)部分的单元格具有标记0 ... 9999。从第二 - 10000 ... 19999等等。我的意思是单元格的标签= 10000 *该部分的部分PLUS原始数量。然后,为了计算这个单元格的特征,我看到有多少10000个标签,从哪个部分计算,以及有多少> 10000标签必须从原始数据中计算出来。所以,我的表视图中有section和raw。

cell.contentView.tag = indexPath.row+10000*indexPath.section; //or any you like
[cell.contentView addSubview:button]; //adding your button

然后,在按钮的回调中:

int row=0;
int section=0;
long tag = [sender superview].tag;
NSLog(@"tag: %ld", tag);
for (int i = 0; i<[data count]; i++) {
    if (tag>=10000) 
    {
        tag-=10000;
        section++;
    }
    else i = [data count];
}
row = tag;

NSIndexPath *indexPath = [[NSIndexPath alloc] initWithIndex:section];
indexPath = [indexPath indexPathByAddingIndex:row];
[tableView cellForRowAtIndexPath:indexPath];

现在,您可以完全访问您的手机。使用计算的rawsection来获取对单元格的访问权限。