我正在研究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];
}
答案 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 */
}