У меня есть простое тестовое приложение (в OSX), в котором есть контроллер представления с кнопкой в его представлении. Метод действия кнопки находится в классе контроллера представления, и этот IBAction подключен к IB (через владельца файла). При нажатии кнопки я получаю ошибку EXC_BAD_Access (за исключением случая, когда я получаю - [NSRunLoop buttonClick:] вместо этого). Я прочитал здесь кучу сообщений о SO, связанных с NSViewControllers, которые не находятся в цепочке респондентов, но также о том, что конкретное подключение метода действия в IB должно работать. Единственный код, который у меня есть, это:
В делегате приложения:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
TestController *controller = [[TestController alloc] initWithNibName:@"TestController" bundle:nil];
[self.window.contentView addSubview:controller.view];
}
А в классе TestController только это:
-(IBAction)buttonClick:(id)sender {
NSLog(@"%@",sender);
}
У меня 2 вопроса. Почему это происходит и где правильное место mvc для размещения IBActions для методов кнопки (не должны ли классы контроллера обрабатывать это)?
strong
в делегате приложения для хранения контроллера и назначите его, все будет работать нормально. Контроллер представления обычно является правильным местом для размещенияIBAction
методов. - person jscs   schedule 04.06.2012