当我尝试访问我的parentViewController中的方法时,我的应用程序崩溃。以下是在故事板iOS访问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方法和方法本身中的所有属性都在STLMMainViewController的.h中声明以供公共访问。
感谢
类参考苹果开发者网站说,这对parentViewController ... 如果收件人是一个容器视图控制器的一个孩子,这个属性保存它包含在视图控制器。如果收件人没有父,该属性中的值为零。 在iOS 5.0之前,如果视图没有父视图控制器并且正在呈现,则会返回呈现视图控制器。在iOS 5上,此行为不再发生。相反,使用presentsViewController属性来访问呈现视图控制器。 也许试试呈现ViewController – chuthan20 2013-02-11 01:13:19