我正在创建包含两个标签和一个按钮的自定义视图。我无法点击按钮。我也发送了下面的代码。
.h文件
#import <UIKit/UIKit.h>
@interface customDeleteButton : UITableViewCell {
IBOutlet UILabel *lbl;
IBOutlet UILabel *lbl1;
}
@property(nonatomic,retain)IBOutlet UILabel *lbl;
@property(nonatomic,retain)IBOutlet UILabel *lbl1;
-(IBAction)btnClick:(id)sender;
@end
.m文件
#import "customDeleteButton.h"
@implementation customDeleteButton
@synthesize lbl,lbl1;
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code.
lbl = [[UILabel alloc] initWithFrame:CGRectMake(50, 10, 200, 20)];
lbl1 = [[UILabel alloc] initWithFrame:CGRectMake(260, 10, 200, 20)];
[self addSubview:lbl];
[self addSubview:lbl1];
}
return self;
}
- (void)willTransitionToState:(UITableViewCellStateMask)state{
[super willTransitionToState:state];
if ((state & UITableViewCellStateShowingDeleteConfirmationMask) == UITableViewCellStateShowingDeleteConfirmationMask) {
for (UIView *subview in self.subviews) {
if ([NSStringFromClass([subview class]) isEqualToString:@"UITableViewCellDeleteConfirmationControl"]) {
UIButton *btn;
btn=[[UIButton alloc]initWithFrame:CGRectMake(0, 0, 64, 33)];
[btn addTarget:subview action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
[btn setImage:[UIImage imageNamed:@"delete.png"] forState:UIControlStateNormal];
btn.userInteractionEnabled=YES;
btn.frame=CGRectMake(0,0,64,33);
//UIImageView *deleteBtn = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 64, 33)];
//[deleteBtn setImage:[UIImage imageNamed:@"delete.png"]];
[[subview.subviews objectAtIndex:0] addSubview:btn];
//[deleteBtn release];
}
}
}
}
-(void)btnClick:(id)sender
{
NSLog(@"HTllo");
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
// Configure the view for the selected state.
}
- (void)dealloc {
[super dealloc];
}
答案 0 :(得分:2)
创建目标时,您需要将目标设置为主视图而不是子视图:
[btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
而且 - 你知道你在代码中做了什么吗?
在函数willTransitionToState中,您是否将UIButtons添加到按钮本身的子视图中? 这真的是你想要做的吗?函数willTransitionToState是否被调用?
答案 1 :(得分:1)
初始化时请尝试设置UIButton类型,并将目标更改为self。
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.frame = CGRectMake(0, 0, 64, 33);
[btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
[btn setImage:[UIImage imageNamed:@"delete.png"] forState:UIControlStateNormal];
btn.userInteractionEnabled=YES;
[[subview.subviews objectAtIndex:0] addSubview:btn];
答案 2 :(得分:0)
将目标更改为self而不是subview。
UIButton *btn;
btn=[[UIButton alloc]initWithFrame:CGRectMake(0, 0, 64, 33)];
[btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
[btn setImage:[UIImage imageNamed:@"delete.png"] forState:UIControlStateNormal];
btn.userInteractionEnabled=YES;
btn.frame=CGRectMake(0,0,64,33);
//UIImageView *deleteBtn = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 64, 33)];
//[deleteBtn setImage:[UIImage imageNamed:@"delete.png"]];
[[subview.subviews objectAtIndex:0] addSubview:btn];
//[deleteBtn release];
答案 3 :(得分:-1)
newString = [oldString stringByReplacingOccurrencesOfString:@"-"withString:@" ' "];