我正在开发一个带有三个标签的应用程序以及一个小视图,其中我创建了一种包含一些信息和一些按钮的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方法不存在。 我尝试了一切,我确信没有拼写错误......
我有可能无法引用代表吗? 感谢有人帮助我...
答案 0 :(得分:3)
我发现了问题:
在TopBarViewController.h
我声明@class MyAppDelegate;
,因为我无法导入(避免循环)。
所以编译器无法找出声明了哪些方法。
要解决此问题,我直接在#import MyAppDelegate.h
!
TopBarViewController.m
无论如何,谢谢你的帮助!
答案 1 :(得分:1)
您是否在showReplyView
的{{1}}中定义了@interface
?