2010-07-21 102 views
1

我正在使用三个选项卡加上一个小视图,其中我创建了一种包含一些信息和一些按钮的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]; 
} 

,你可以看到我设置.appDelegate在顶栏做一些回调在顶栏(的代码,即:当我想改变标签目前可视化)

现在在我的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

是否应用程序委托在ivar和属性定义中具有不同类型的拼写错误?并且不应该将参考存储到委托 - 更好地使用[[UIApplication sharedApplication]委托]方法 – Vladimir 2010-07-21 11:31:50

+0

是的,这是一个错字...抱歉。 并感谢您的建议,但我更愿意这样做,所以我不必施放[UIApplication sharedApplication]委托]的结果... – enrico 2010-07-21 12:11:45

回答

3

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

要解决它,我直接在TopBarViewController.m中输入#import MyAppDelegate.h

无论如何要帮忙!

1

您是否定义了showReplyView@interfaceMyAppDelegate