Ios 已将无法识别的父子选择器发送到实例

Ios 已将无法识别的父子选择器发送到实例,ios,xcode,ipad,exception,parent-child,Ios,Xcode,Ipad,Exception,Parent Child,我有一个子视图,叫做DataViewController,还有一个父视图控制器,叫做RootViewController 每次尝试从我的子视图调用在我的RootViewController中定义的函数或设置属性时,我都会遇到以下错误: 错误: 由于未捕获异常而终止应用程序 “NSInvalidArgumentException”,原因:”-[UIPageViewController setDetailsDataObject::发送到实例的选择器无法识别 0x6aa2df0' 代码: RootVi

我有一个子视图,叫做DataViewController,还有一个父视图控制器,叫做RootViewController

每次尝试从我的子视图调用在我的RootViewController中定义的函数或设置属性时,我都会遇到以下错误:

错误:

由于未捕获异常而终止应用程序 “NSInvalidArgumentException”,原因:”-[UIPageViewController setDetailsDataObject::发送到实例的选择器无法识别 0x6aa2df0'

代码:

RootViewController.h:

@property (strong, nonatomic) id detailsDataObject;
- (void)showDetails;
DataViewController.m:

((RootViewController *)self.parentViewController).detailsDataObject = self.dataObject;
- (void)showDetails
{
    NSLog(@"Hello");
}
[((RootViewController *)self.parentViewController) showDetails];
而且

错误:

由于未捕获异常而终止应用程序 “NSInvalidArgumentException”,原因:”-[UIPageViewController showDetails]:发送到实例0x6880db0'的无法识别的选择器

代码:

RootViewController.h:

@property (strong, nonatomic) id detailsDataObject;
- (void)showDetails;
RootViewController.m:

((RootViewController *)self.parentViewController).detailsDataObject = self.dataObject;
- (void)showDetails
{
    NSLog(@"Hello");
}
[((RootViewController *)self.parentViewController) showDetails];
DataViewController.m:

((RootViewController *)self.parentViewController).detailsDataObject = self.dataObject;
- (void)showDetails
{
    NSLog(@"Hello");
}
[((RootViewController *)self.parentViewController) showDetails];

有人知道如何修复这些异常吗?

执行Nsaasert语句以检查self.parentViewController是否实际上是RootViewController实例

NSAssert([self.parentViewController isKindOfClass:[RootViewController class]], @"Not RootViewController");

试试这个..如果有任何拼写错误,请更正。

感谢您的回复,我对xcode和iOS开发非常陌生,所以我从未听说过NSAssert或如何使用它,尤其是在这种情况下。您能再帮我一些吗?谢谢您的帮助,断言失败:在-[DataViewController handleSingleDoubleTap:]、/Users/kevincuppens/Desktop/Catalogs/Catalogs/DataViewController中断言失败。m:83 2012-01-19 08:42:47.935 Catalogs[6063:f803]***由于未捕获的异常“NSInternalInconsistencyException”终止应用程序,原因:'不是基于此的RootViewController'。。self.parentViewController不是RootViewController类实例。。因此,您的代码中有一个未发布的错误..在源代码中搜索DataViewController alloc,然后将该函数作为问题的更新发布parentViewController不是RootViewController类实例,谢谢您的帮助