找不到方法

时间:2010-07-21 11:13:42

标签: iphone cocoa-touch

我正在开发一个带有三个标签的应用程序以及一个小视图,其中我创建了一种包含一些信息和一些按钮的TopBar。

在主应用程序委托中我定义:

- (void)applicationDidFinishLaunching:(UIApplication *)application 
{  
  ...
  // Add the tab bar controller's current view as a subview of the window  
  [window addSubview:tabBarController.view];  
  //here we add the topBar:  
  topBarViewController = [TopBarViewController instance];  
  topBarViewController.appDelegate = self;
  [window addSubview:topBarViewController.view];
  ...
}

- (void)showReplyView
{
  self.tabBarController.selectedViewController = 
    [self.tabBarController.viewControllers objectAtIndex:2];
}

你可以看到我在topBar中设置.appDelegate以在topBar的代码中进行一些回调(即:当我想要更改当前可视化的选项卡时)

现在在我的TopBarViewController.h中我有:

@interface TopBarViewController : UIViewController {
  MyAppDelegate *appDelegate;
  ...
}
@property (nonatomic,retain) MyAppDelegate *appDelegate;
-(void)testMethod;

并在.m文件中:

@implementation TopBarViewController
@synthesize appDelegate;
...
-(void)testMethod{
  [appDelegate showReplyView];
}
...

当我构建项目时,编译器告诉我showReplyView方法不存在。 我尝试了一切,我确信没有拼写错误......

我有可能无法引用代表吗? 感谢有人帮助我...

2 个答案:

答案 0 :(得分:3)

我发现了问题: 在TopBarViewController.h我声明@class MyAppDelegate;,因为我无法导入(避免循环)。 所以编译器无法找出声明了哪些方法。

要解决此问题,我直接在#import MyAppDelegate.h

中导入TopBarViewController.m

无论如何,谢谢你的帮助!

答案 1 :(得分:1)

您是否在showReplyView的{​​{1}}中定义了@interface