2013-01-22 60 views
0

我有两个类A和B在A级使用:调用方法

@interface A : B 

在B类我已经有了这行代码:

self.navigationItem.rightBarButtonItem = [UIBarButtonItem barItemWithImage:[UIImage imageNamed:@"Add-button-normal"] 
                  highlightedImage:[UIImage imageNamed:@"Add-button-active"] 
                    target:self 
                    action:@selector(showPopoverUI:)]; 

我如何才能获得A类项目这个,我尝试这行代码,但它不工作:

self.navigationItem.rightBarButtonItem = [UIBarButtonItem barItemWithImage:[UIImage imageNamed:@"Add-button-normal"] 
                  highlightedImage:[UIImage imageNamed:@"Add-button-active"] 
                    target:self.parentViewController 
                    action:@selector(showPopoverUI:)]; 

,我得到这个错误:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[B showPopoverUI:]: unrecognized selector sent to class 0x226308' 
+1

您的目标在这两个代码示例中有所不同。在第二个例子中尝试只针对自我。 –

+0

谢谢Stefan!是工作。请张贴您的答案,将其标记为正确。 – edzio27

+0

我将它添加为答案,很高兴它的工作! –

回答

1

您在第二个示例中针对的是parentViewController,而应该继续以self为目标。

1

当你想调用一个super类的方法,你需要调用super

取而代之的是,你需要调用super navigationItem...

,或者

self.navigationItem.rightBarButtonItem = [UIBarButtonItem barItemWithImage:[UIImage imageNamed:@"Add-button-normal"] 
                  highlightedImage:[UIImage imageNamed:@"Add-button-active"] 
                    target:self 
                    action:@selector(showPopoverUI:)]; 
+0

我试过这个,并得到相同的结果 – edzio27

+0

你calles self.navigation,我建议使用super.navigation或yuo需要打包超级的实例来调用其导航。 –

1

如果你inhereting你应该能够使用自己的方式,并且将其称为自己的方法

尝试:

self.navigationItem.rightBarButtonItem = [UIBarButtonItem barItemWithImage:[UIImage imageNamed:@"Add-button-normal"] highlightedImage:[UIImage imageNamed:@"Add-button-active"]target:self action:@selector(showPopoverUI:)];