我不能在两个不同的文件中使用#import“Header.h”

时间:2014-03-13 17:34:22

标签: ios iphone objective-c uiviewcontroller

我有3个ViewControllers。我想让他们互相访问,我的意思是。

  

VC1必须访问VC2和VC3。

     

VC2必须访问VC1和VC3。

     

VC3必须访问VC1和VC2。

当我想要更改为另一个ViewController时,我会执行以下操作:

我导入了ViewController的标题,我可以更改:

例如,在VC1中:

#import "VC2"
#import "VC3"

然后我做:

VC2 *myVC2;
VC3 *myVC3;

然后我用:

更改视图控制器
myVC2 = [[VC2 alloc] initWithNibName:@"VC2" bundle: nil];
myVC-C = [[VC3 alloc] initWithNibName:@"VC3" bundle: nil];

[self.view addSubView:myVC2.view];

[self.view addSubView:myVC3.view];

但是,当你有2个ViewController时,这个方法是可用的。现在在第三个ViewController中,我尝试导入标题并声明:

VC3 *myVC3;

VC1 *myVC1;

编译器说我修复了。

他建议我改变课程的名称,好像你做错了什么。

调用多个ViewControllers的方法是什么?我不想使用TabBars。我在每个视图中使用3个按钮来访问ViewControllers。

问候。

1 个答案:

答案 0 :(得分:3)

根据您对问题的描述,我的猜测是您的问题与“循环依赖”有关。通常,最好避免在标头(#import)文件中使用.h。相反,使用@class表示该类存在,并将#import指令放在实现(.m)文件中以实际使用该类。

示例:

MyViewController.h

#import <UIKit/UIKit.h>

@class MySecondViewController;

@interface MyViewController : UIViewController {
     MySecondViewController *_secondViewController;
     // ...
}

// ...

@end

MyViewController.m

#import "MyViewController.h"
#import "MySecondViewController.h"

@implementation MyViewController

// ...

@end