1

我有一个 UITableView,它有一个用于 UITableViewCell 的 xib 文件。

在 UITableViewCell 上,我添加了 2 个单元格数据 - 因为我想实现两列样式。所以不能修改。单元格有点复杂,也有更多组件,我想处理按钮 UIControlEventTouchUpInside 事件的操作。它将下载一些东西,并且需要在任务竞争后将按钮文本从“下载”更改为“查看”,例如。

如果我不处理多线程、异步的东西,它就会解决这个问题,但是需要。所以我需要将按钮和索引传递给操作方法,或者为按钮设置一个属性(在 Java 中很容易)但找不到它。

一半代码如下所示:

    [buttonAction addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];

并需要这样的东西:

-(void)buttonPressed:(UIButton*)button index: (int) index
{

}

在其他问题中,索引是通过传递的,buttonAction.tag = index但是如果我更改该属性,那么我认为它不会起作用

UIButton *buttonAction = (UIButton *)[cell viewWithTag:205]; 声明不再在

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

任何建议如何处理这种情况?

4

1 回答 1

1

您可以对类进行子UIButton类化,并为您需要的所有信息提供属性。然后你为 TouchUpInside 的按钮添加动作@selector(buttonPressed:)

-(void)buttonPressed:(YourCustomButton *)sender  // or id and then you check it's class and cast to your custom button class
{
    // work with sender.yourProperty
}

编辑

 [button setTitle:@"Download" forState:UIControlStateNormal];
 [button setTitle:@"View" forState:UIControlStateReserved];

然后根据您的头衔工作:button.currentTitle

于 2013-07-04T11:15:19.887 回答