не могу добавить событие клика в UIbutton - PullRequest
0 голосов
/ 23 января 2012

Я создаю пользовательский вид, который включает две метки и одну кнопку. Я не могу получить кнопку. Я также отправляю код, который указан ниже.

.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];
}

Ответы [ 4 ]

2 голосов
/ 23 января 2012

При создании необходимо установить цель для основного вида, а не подпредставлений:

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

А также - понимаете ли вы, что вы делаете в своем коде?

В функции willTransitionToState вы добавляете UIButtons к подпредставлениям самой кнопки? Это действительно то, что вы хотите сделать? Функция willTransitionToState даже вызывается?

1 голос
/ 23 января 2012

Пожалуйста, попробуйте установить UIButton Type во время инициализации и измените цель на 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];
0 голосов
/ 23 января 2012
newString = [oldString stringByReplacingOccurrencesOfString:@"-"withString:@" ' "];
0 голосов
/ 23 января 2012

Изменить цель на себя вместо подпредставления.

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];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...