我有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。
问候。
答案 0 :(得分:3)
根据您对问题的描述,我的猜测是您的问题与“循环依赖”有关。通常,最好避免在标头(#import
)文件中使用.h
。相反,使用@class
表示该类存在,并将#import
指令放在实现(.m
)文件中以实际使用该类。
示例:
#import <UIKit/UIKit.h>
@class MySecondViewController;
@interface MyViewController : UIViewController {
MySecondViewController *_secondViewController;
// ...
}
// ...
@end
#import "MyViewController.h"
#import "MySecondViewController.h"
@implementation MyViewController
// ...
@end