关于识别tableview中按钮动作的部分的问题

时间:2014-01-03 05:23:37

标签: ios tableview uitableview

我正在研究iOS项目,其中有一个表有2个部分。它还有搜索栏。在表格单元格中我有一个标签和一个按钮。在这两个部分来自不同数组的数据。现在的问题是我不是能够在点击按钮时识别该部分的单元格。我可以在该自定义按钮动作上识别按钮的哪个部分是什么? p;轻松帮助我。我正在粘贴以下代码。

- (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];
    }
    else
    {
        UIView *subview;
        while ((subview= [[[cell contentView]subviews]lastObject])!=nil)
            [subview removeFromSuperview];

    }
    [cell setSelectionStyle:UITableViewCellSelectionStyleNone];

    UILabel *nameLabel=[[UILabel alloc]initWithFrame:CGRectMake(10,12,230,40)];
    [cell.contentView addSubview:nameLabel];
    //lblCal.backgroundColor=[UIColor blueColor];//[UIColor colorWithRed:190 green:0 blue:0 alpha:1];
    nameLabel.textColor=[UIColor blackColor];
    nameLabel.font=[UIFont fontWithName:@"Helvetica" size:18.0];//[UIFont fontWithName:@"Helvetica" size:12.0];
    nameLabel.textAlignment=NSTextAlignmentLeft;
    nameLabel.backgroundColor=[UIColor clearColor];

    UIButton *btn=[UIButton buttonWithType:UIButtonTypeCustom];
    [cell.contentView addSubview:btn];
    btn.frame=CGRectMake(255,0,65, 65);
    btn.tag=indexPath.row;
    [btn addTarget:self action:@selector(sendFollowUnfollowRequest:) forControlEvents:UIControlEventTouchUpInside];
    Team* team;
    if(isFiltered)
    {
        if (indexPath.section==0) {

            team = [filterFollow objectAtIndex:indexPath.row];
            [btn setImage:[UIImage imageNamed:@"icon_check@2x.png"] forState:UIControlStateNormal];
        }
        if(indexPath.section==1)
        {
            team = [filterUnFollow objectAtIndex:indexPath.row];
            [btn setImage:[UIImage imageNamed:@"icon_plus@2x.png"] forState:UIControlStateNormal];

        }
    }
    else
    {
        if (indexPath.section==0) {
            team = [followTable objectAtIndex:indexPath.row];
            [btn setImage:[UIImage imageNamed:@"icon_check@2x"] forState:UIControlStateNormal];

        }
        if(indexPath.section==1)
        {
            team = [unfollowTable objectAtIndex:indexPath.row];
            [btn setImage:[UIImage imageNamed:@"icon_plus@2x.png"] forState:UIControlStateNormal];
        }
    }
    [nameLabel setText:team.teamName];
    return cell;
}

-(void)sendFollowUnfollowRequest:(UIButton *)tag
{
    [self.searchBar resignFirstResponder];
}

4 个答案:

答案 0 :(得分:2)

您需要单独发送行和部分信息,以便将标记设为

Tag= row*1000+section.

现在使用row= tag/1000 section =tag%1000

从标记获取部分和行值

使用此值来制作正确的索引路径或找到一些更好的2分钟解决方案来获得它。

小心它的解决方法是正确的  子类UIButton     在其中添加indexpath属性     让你的类创建按钮对象和标记集indexpath属性。

在CustomButton.h中

@interface CustomButton :UIButton
@property (nonatomic,assign)NSIndexPath *path;
@end
CustomButton.m中的

@implementation CustomButton
@synthesize path;
@end

在表格视图单元格上使用此自定义按钮,而不是标记集路径属性

答案 1 :(得分:0)

您可以检索UITableViewCell使用按钮,然后让indexPath标识该部分。像这样:

  

UITableViewCell * cell =(UITableViewCell *)[[tag superview]   上海华];

     

int section = [tableView indexPathForCell:cell] .section;

tag是您点按的按钮的位置。祝你好运!

答案 2 :(得分:0)

试试这个

 NSString *tempTag=[NSString stringWithFormat:@"%d%d",indexPath.section,indexPath.row];
 btn.tag=[tempTag intValue];

答案 3 :(得分:0)

我想,这可能是一个你没见过的简单错误。我见过这个。

btn.tag=indexPath.row;

但你已经谈到了部分。 所以你可以尝试这个..

btn.tag=indexPath.section;

在您的方法中,

-(void)sendFollowUnfollowRequest:(UIButton *)button
{
   if (button.tag == 0)
    self.searchBarDataSource = //first Section Search Bar;
   else if (button.tag == 1)
    self.searchBarDataSource = //Second Section Search Bar;

   /* show search Bar */
}