UIButton addTarget для метода другого класса - PullRequest
0 голосов
/ 29 июня 2011

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

один класс

-(void)myMethod{
//some code
    SEL myFunction = @selector(myFunction:);
    [obj refresh:[[NSDictionary alloc] initWithObjectsAndKeys:self,@"target",circleBtnAct,@"action",nil]
                  action:circleBtnAct];
    [addContactView addSubview:myWorldView];
//some code
}
-(IBAction)myFunction:(id)sender{
    NSLog(@"... %d",[sender tag]);
}

второй класс

-(void)refresh:(id)sender action:(SEL)action{
//some code
    [btn addTarget:[sender objectForKey:@"target"] action:action forControlEvents:UIControlEventTouchDown];
//some code
}

даже я тоже пробовал [btn addTarget:[sender objectForKey:@"target"] action:[sender objectForKey:@"action"] forControlEvents:UIControlEventTouchDown];

Но это не работает .. приложение вылетает на линии addTarget

Это прекрасно работает, если я создаю объект класса один во втором классе, а затем использую эту строку
[btn addTarget:oneObj action:@selector(myFunction:) forControlEvents:UIControlEventTouchDown];

1 Ответ

0 голосов
/ 29 июня 2011

Простите, ребята, глупая ошибка

Я передавал не объектное значение в словаре

Теперь используя этот словарь
[[NSDictionary alloc] initWithObjectsAndKeys:self,@"target",[NSValue valueWithPointer:@selector(circleBtnAct:)],@"action",nil]

-(void)myMethod{
//some code
    SEL myFunction = @selector(myFunction:);
    [obj refresh:[[NSDictionary alloc] initWithObjectsAndKeys:self,@"target",[NSValue valueWithPointer:@selector(circleBtnAct:)],@"action",nil]
                  action:circleBtnAct];
    [addContactView addSubview:myWorldView];
//some code
}

второй класс

-(void)refresh:(id)sender action:(SEL)action{
//some code
    [btn addTarget:[sender objectForKey:@"target"] action:[[sender objectForKey:@"action"] pointerValue] forControlEvents:UIControlEventTouchDown];
//some code
}

Спасибо всем

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...