2012-01-23 23 views
-1

我正在创建包含两个标签和一个按钮的自定义视图。我不能得到按钮点击。我也发送下面的代码。无法在UIbutton中添加点击事件

.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

将目标更改为自我而不是子视图。

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]; 
+0

感谢名单,但我想它。它不工作。 – Akash

+0

是你点击按钮? –

+0

是的。其实我是以编程方式创建它。 – Akash

2

您需要在目标设置为您的主视图没有子视图,当您创建它:

[btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside]; 

而且还 - 你有没有意识到你在你的代码做什么?

在函数willTransitionToState中,您将UIButtons添加到按钮本身的子视图中? 这真的是你想要做的吗?函数willTransToToState甚至调用?

+0

它不工作。 – Akash

+0

检查我的更新回答 –

+0

yes当willTransitionToState在那个时候调用我想添加按钮。 – Akash

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]; 
-1
newString = [oldString stringByReplacingOccurrencesOfString:@"-"withString:@" ' "];