2014-03-13 40 views
0

我有3個ViewControllers。我的意思是,我希望他們互相訪問。我不能在兩個不同的文件中使用#import「Header.h」

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]; 

但是,這種方法是可用的,當u有2的ViewController。現在,在第三個ViewController中我嘗試導入頁眉和聲明:

VC3 *myVC3; 

VC1 *myVC1; 

,編譯器說,我的修正。

他建議我改變類的名字,如果你做錯了什麼。

什麼是調用多個ViewControllers的方法是什麼?我不想使用TabBars。我使用3個按鈕,在每個視圖中複製以訪問ViewControllers。

問候。

+0

目標C不允許名稱以連字符('-')在其中。先嚐試修復。 – Linuxios

+0

是一個例子,真的我在做wihtout( - )對不起,我會編輯帖子。 – Eladar

+1

另外,您可能會遇到循環依賴問題。如果是這樣,請使用'@ class'指令。 HTTP://計算器。com/questions/5425465/does-objective-c-allow-circular-dependencies – Aaron

回答

3

根據您的問題描述,我的猜測是,你的問題是關於「循環依賴關係。」一般來說,最好避免在標頭(.h)文件中使用#import。相反,使用@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 
+0

在我嘗試實現你的代碼之前,你能解釋我爲什麼使用* _secondViewController;而不是* secondViewController;抱歉,我是iOS新手。 – Eladar

+1

下劃線前綴只是Objective-C中一個常見的實例變量命名約定。 – Aaron

+0

@aapierce好吧,現在我看到你的代碼有效,但現在的問題是。 ViewControllers重疊。我該如何解決這個問題? – Eladar

相關問題