У меня есть приложение, в котором мне нужно иметь возможность обновлять, какие кнопки могут отображаться на главном экране, и я решил использовать основные данные, чтобы позволить мне обновлять управляющее свойство через XML. Основные данные, кажется, работают хорошо и обновляются, а кнопки создаются, однако по какой-то причине селектор не сохраняется, так как он падает каждый раз, когда я нажимаю на кнопку. Журнал ошибок ничего не говорит - за исключением одного раза, когда он сказал «нераспознанный селектор отправлен в экземпляр». Вот метод, который я использую для создания кнопок:
- (void)setUpNavigationButtons {
int i = 0;
for (Features *myFeature in self.features) {
CGRect buttonRect = [self makeFeatureButtonFrame:[self.features count] withMember:i];
UIButton *aButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[aButton setFrame:buttonRect];
[aButton addTarget:self action:@selector(buttonTouched:) forControlEvents:UIControlEventTouchUpInside];
[aButton setTitle:[NSString stringWithFormat:@"%@",myFeature.name] forState:UIControlStateNormal];
[self.view addSubview:aButton];
i++;
}
}
Вот метод выбора, в том же классе контроллера представления:
- (void)buttonTouched:(id)sender{
NSLog(@"feature selected");
}
Любая помощь очень ценится. Пожалуйста, дайте мне знать, если для выяснения чего-либо значимого требуется больше кода. Я не хочу просить людей прочитать гору, если требуется только кротовина.
ОБНОВЛЕНИЕ: 4/27/2011
В ответ на комментарии в проверенном ответе ниже я публикую код, запускающий контроллер представления. У меня не было проблем с этим в прошлом, но вполне возможно, что я выбрал здесь плохую технику. Это из приложения метода: метод didFinishLaunchingWithOptions в AppDelegate. Во всяком случае, вот код:
UINavigationController *navigationController = [[[UINavigationController alloc] init] autorelease];
HomeViewController *root = [[HomeViewController alloc] initWithNibName:@"HomeViewController" bundle:nil];
root.title = companyName;
root.context = [self managedObjectContext];
[navigationController pushViewController:root animated:NO];
[window addSubview:navigationController.view];
[root release];
[self.window makeKeyAndVisible];
return YES;