繁体   English   中英

cellForRowAtIndexPath方法自定义按钮显示2次

[英]cellForRowAtIndexPath method custom button show 2 time

我在cellForRowAtIndexPath方法中使用了此代码。 当我单击按钮或滚动表时,此按钮显示两次。 为什么此按钮显示2次,请帮帮我?

UIButton *trashbtn=[[UIButton alloc]initWithFrame:CGRectMake(cell.frame.size.width-20, cell.frame.size.height-30, 20, 20)];
[trashbtn setImage:[UIImage imageNamed:@"editor_trash"] forState:UIControlStateNormal];
[trashbtn addTarget:self action:@selector(DeleteMyAssociate:) forControlEvents:UIControlEventTouchUpInside];
[trashbtn setTag:indexPath.row];
[cell addSubview:trashbtn];

您首先应该在IB中的表内添加UITableViewCell。 然后为该单元格指定一个标识符,例如“ MyCellIdentifier”。 仍然在IB上,将出口添加到该单元格,例如按钮,textFields...。您可以最初将按钮设置为不可见。 然后在cellForRowAtIndexPath方法中,执行以下操作:

- (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyCellIdentifier"];
    if(cell){
        myButton.hidden = NO; // 
        myTextField.text = @"BlaBlaBla";
    }
}

嘿,我可以建议您使用自动布局和情节提要添加按钮,而不是通过编程方式添加按钮。
那是更好,更清洁的方法。

您面临的问题是单元格在表视图中被重用,因此,第一次创建按钮并将其添加到单元格时,它会出现一次。 但是,如果它已出队,则它已经具有按钮,因此当您添加另一个按钮时,最终会有多个按钮。

有两种方法可以纠正此问题。

首先,删除单元格的prepareForReuse方法中的按钮,该方法在单元格被重用后立即调用。

其次,避免在cellForTableView...方法中创建自定义视图。 使用已经具有按钮的自定义单元格。 现在,您可能会问,如果以这种方式执行按钮操作,该如何挂钩呢? 您可以为您的单元格提供一个委托方法,以调用您的视图控制器,或者可以为您的单元格传递一个块,以在单击按钮时执行。

据我所知,您已经有一个自定义单元格。向现有单元格添加一个按钮,并在customCell.h文件中为该单元格创建一个IbOutlet,然后在cellForRowAtIndexPath方法中使用其IBOutlet访问该按钮

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

    customCell *cell =(customCell*) [tableView dequeueReusableCellWithIdentifier:@"customCell" forIndexPath:indexPath];

    [cell.btn setTitle:@"blabla" forState:UIControlStateNormal];
    [cell.btn setTag:indexPath.row];
    [cell.btn addTarget:self action:@selector(method:) forControlEvents:UIControlEventTouchUpInside];
    if(condition)
     {
     cell.btn.hidden=YES;
     }
     else
     {
     cell.btn.hidden = NO;
     }
   return cell;
}

不要忘记在ViewController类中注册customCell类。

您可以根据需要隐藏或取消隐藏按钮,也可以在每个类中向按钮添加不同的操作。 快乐编码..!

如果我的代码对您有帮助,请投票。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM