Подтвердить что ты не робот

Привязать действие к UIButton

В моем AppController я загружаю View со следующим кодом.

- (void) loadSettingsController {
    settingsViewController = [[SettingsViewController alloc] initWithNibName:@"SettingsView" bundle:nil];
    UIButton *button = settingsViewController.loginButton;
    [button addTarget:self action:@selector(saveSettings:) forControlEvents:UIControlEventTouchUpInside];
}

- (IBOutlet) saveSettings:(id) sender

Впоследствии представление будет добавлено в окно с кодом

[window addSubview:[settingsViewController view]];

Все работает нормально, но действие saveSettings не вызывается, когда я нажимаю кнопку при использовании отладчика. Свойство loginButton связано с кнопкой в ​​построителе интерфейса.

Вы видите что-то не так с этим кодом?

4b9b3361

Ответ 1

Изменение IBOutlet на IBAction

- (IBAction) saveSettings:(id) sender

Это потому, что вы пытаетесь подключить свой объект до того, как вызван вызов viewDidLoad. вы должны подождать до того, как будет вызван viewDidLoad, существует множество способов достижения этого.

добавьте это в свою функцию ViewViewController ViewDidLoad

 [[NSNotificationCenter defaultCenter] postNotificationName:@"SettingsViewDidLoad" object:nil];

и это для вашего ViewController, к которому вы хотите получить доступ к кнопке

- (void) loadSettingsController {
       settingsViewController = [[SettingsViewController alloc] initWithNibName:@"SettingsView" bundle:nil];
       [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(initControls) name:@"SettingsViewDidLoad" object:nil];
}

-(void)initControls{
       UIButton *button = settingsViewController.loginButton;
       [button addTarget:self action:@selector(saveSettings:) forControlEvents:UIControlEventTouchUpInside];
}