Элемент пользовательского интерфейса setAction и setTarget не работают - PullRequest
2 голосов
/ 29 июня 2011

Я нашел несколько ответов на мой вопрос, но он все еще не работает. Я установил кнопку в IB, и я хочу настроить действие и цель по коду (только для изучения). У меня есть функция в моем MainViewController:

- (IBAction) onSpecialCase:(id)sender {
    NSLog(@"It's working");
}

В функции viewDidLoad я делаю это:

- (void)viewDidLoad
{
    [super viewDidLoad];
// Do any additional setup after loading the view from its nib.
[myButton setTarget:self];
[myButton setAction:@selector(onSpecialCase:)];
}

Xcode уже помечает эти строки, говоря мне: «UIButton может не отвечать на setTarget». В любом случае, когда приложение запускается, оно перестает говорить:

-[UIRoundedRectButton setTarget:]: unrecognized selector sent to instance 0x4b47e30
2011-06-29 08:12:22.465 FirstTry[3765:207] *** Terminating app due to uncaught exception     'NSInvalidArgumentException', reason: '-[UIRoundedRectButton setTarget:]: unrecognized selector sent to instance 0x4b47e30'

Это то, что я мог ожидать от предупреждения XCode, но почему? Каждый пример, который я нахожу в Интернете, точно такой же, как мой. Добавление actionMethode к кнопке через IB работает, как и ожидалось. Что я делаю не так?

Ответы [ 2 ]

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

сначала проверьте, объявили ли вы кнопку как розетку, во-вторых, вы должны проверить, подключили ли вы розетку к кнопке или что я обычно использую, чтобы добавить новую кнопку в коде

UIButton *Button=[UIButton buttonWithType:UIButtonTypeCustom] ;
Button.frame=CGRectMake(0,0,30,30); // place your button
[Button addTarget:self action:@selector(processButtonCLick) forControlEvents:UIControlEventTouchUpInside];
[Button setImage:[UIImage imageNamed:@"imageoricon.png"] forState:UIControlStateNormal];
[self.view addSubview:Button];
2 голосов
/ 29 июня 2011

Это может вам помочь.

UIButton *sendButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [sendButton setTitle:@"Send" forState:UIControlStateNormal];

    [sendButton.titleLabel setFont:[UIFont boldSystemFontOfSize:12]];
    sendButton.frame = CGRectMake(0, 3, 67, 37);
    [sendButton addTarget:self action:@selector(sendButtonClicked) forControlEvents:UIControlEventTouchUpInside];
...