我创建了一个应用程序,因为我在UITableViewCell文件中以编程方式创建了一个UIButton。
以下是代码。
//UITableViewCell.m
//VIDEO DISPLAY BUTTON VIEW
self.playBtnClick = [[UIButton alloc]initWithFrame:CGRectMake(140, 130, 50, 50)];
self.playBtnClick.clipsToBounds = YES;
[self.playBtnClick setBackgroundImage:[UIImage imageNamed:@"play2.png"] forState:UIControlStateNormal];
[self addSubview:self.playBtnClick];
我有UITableViewController我想在didSelectRowAtIndexPath中使用这个UIButton playBtnClick
以下是我想使用playBtnClick
的代码 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
//Here I want to perform someTask when i pressed plyBtnClick button
}
答案 0 :(得分:0)
你可以这样做:
-(id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(nullable NSString *)reuseIdentifier withTag:(long)buttonTag{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code
NSLog(@"tag:%ld",buttonTag);
UIButton *playBtnClick = [[UIButton alloc]initWithFrame:CGRectMake(50,0, 20, 25)];
playBtnClick.clipsToBounds = YES;
playBtnClick.backgroundColor = [UIColor grayColor];
[playBtnClick addTarget:self action:@selector(playBtnClick:) forControlEvents:UIControlEventTouchUpInside];
[playBtnClick setBackgroundImage:[UIImage imageNamed:@"play2.png"] forState:UIControlStateNormal];
playBtnClick.tag = buttonTag;
[self addSubview:playBtnClick];
}
return self;
}
-(void)playBtnClick:(UIButton*)button
{
NSLog(@"cell index:%d",(int)button.tag);
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
TableViewCell *cell = [[TableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
return cell;
}
这样打电话
TableViewCell *cell = [[TableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier withTag:indexPath.row];
//不要忘记添加这个UITableViewCell.h文件
-(id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(nullable NSString *)reuseIdentifier withTag:(long)buttonTag;
答案 1 :(得分:0)
在CustomTableViewCell.h中
@protocol CellSelectedDelegate
- (void)CellChecked:(BOOL)value andCell:(UITableViewCell *)cell ;
@end
@interface TreeViewCell : UITableViewCell
@property (nonatomic, assign) id <CellSelectedDelegate> delegate;
@end
在CustomTableViewCell.m
中你在哪里创建btn
btn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 20, 20)];
btn.userInteractionEnabled = YES;
[btn addTarget:self action:@selector(clickme:) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:btn];
btn.delegate=self;
然后在CustomTableViewCell.m中添加函数
-(void)clickme:(UIButton *)sender
{
[delegate Checked:NO];
}
在你的UITableViewController.h
中@interface tableView : UITableView <CellSelectedDelegate,UITableViewDataSource,UITableViewDelegate>
在你的UITableView.m
中-(void)CellChecked:(BOOL)value andCell:(UITableViewCell *)cell
{
NSLog(@"%@%@",value,cell);
}
答案 2 :(得分:0)
仅供参考:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
//Here I want to perform someTask when i pressed plyBtnClick button
}
您无法在上述方法中单击按钮执行任何任务。上面的方法是一个表委托方法,它只能识别表格单元格上的点击。
您应该有一个自定义操作按钮方法,当您点按按钮时会触发该方法。您应该将标记值赋予按钮,并在操作方法中比较发件人标记并执行所需的任务。