Мое приложение разбивается при попытке доступа к методу в моем родительском контролере. Здесь расположение в StoryBoardiOS Доступ к собственности в parentViewController
MainViewController = STLMMainViewController (ParentViewController)
СЦЕНЫ1 = STLMTimeDateViewController (ChildViewController)
Здесь код для STLMTimeDateViewController
#import "STLMTimeDateViewController.h"
#import "STLMMainViewController.h"
@interface STLMTimeDateViewController()
@property (nonatomic, strong) STLMMainViewController *stlmMainViewController;
@end
- (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"The name of the controller %@",self.navigationController.parentViewController);
stlmMainViewController= (STLMMainViewController *) self.parentViewController;
[stlmMainViewController locationButtonSelected]; // This is where the App crashes
NSLog(@"TimeDateController");
}
Приложение Выполняется, но когда вызывается STLMMainViewController, приложение падает со следующей ошибкой:
2013-02-10 16:33:57.422 MyApp[9120:c07] The name of the controller <STLMMainViewController: 0x83850d0>
2013-02-10 16:33:57.434 MyApp[9120:c07] -[UINavigationController locationButtonSelected]: unrecognized selector sent to instance 0x8371a70
Если удалить следующую строку:
stlmMainViewController = (STLMMainViewController *) self.parentViewController;
и просто оставить
[stlmMainViewController locationButtonSelected];
приложение работает, не ошибка, но следующий метод в [ STLMMainViewController locationButtonSelected] не получает вызов (я никогда не вижу журнал):
-(void)locationButtonSelected
{
[LocationButton setSelected:YES];
[eatDrinkbutton setSelected:NO];
[timeCalButton setSelected:NO];
[carButton setSelected:NO];
[contactButton setSelected:NO];
NSLog(@"LocationButtonSelected Method");
}
Все свойства в locationButtonSelected метод и сам метод объявлены в .h из STLMMainViewController для общего доступа.
Благодаря
Ссылка на класс для UIViewController на сайтах разработчиков Apple говорит это для parentViewController ... Если получатель является дочерним элементом контроллера представления контейнера, это свойство содержит контроллер представления, в котором он содержится. Если у получателя нет родителя, значение в этом свойстве равно нулю. До IOS 5.0, если в представлении не было родительского контроллера представления, и он был представлен, контроллер представления будет возвращен. На iOS 5 этого поведения больше не происходит. Вместо этого используйте свойство presentingViewController для доступа к контроллеру представления представления. Может быть, попробуйте представитьViewController – chuthan20