2014-10-08 19 views
0

我在創建應用程序時遇到問題。我想從我當前的ViewController2中的ViewController1中調用一個方法。無法從第二個ViewController調用方法

在我的ViewController1的.h文件中,我聲明瞭方法,使其可見。

-(void)saveLocation; 

在我ViewController2.h文件我有以下

#import "ViewController1.h" 



@interface ViewController2 : UIViewController 

@property (nonatomic,assign) ViewController1 *MethodSave; 

@end 

,並在我的ViewController2.m

[self.MethodSave saveLocation]; 

它不工作,我一直試圖修復它有一段時間了。任何幫助都會很棒。謝謝

+0

您在這裏有一個錯字@property(非原子,分配)ViewController1 * MethodSave; 它看起來像MethodSave是一個類名,所以它與它相沖突。嘗試用其他名稱進行更改。 – 2014-10-08 14:09:54

+0

它實際上被稱爲WeatherMethodSave,我得到的錯誤是說'未知的類型名'ViewController1',我已經導入類? – burrGGG 2014-10-08 14:14:30

+0

您需要通過使用代表團 走這 http://stackoverflow.com/questions/24815259/iphone-call-function-from-another-view-controller – 2014-10-08 14:14:31

回答

0

我想你只宣佈了一個屬性@property (nonatomic,assign) ViewController1 *MethodSave;,但還沒有分配這個屬性。所以先分配它然後調用函數。

MethodSave = [ViewController1 new]; 
[self.MethodSave saveLocation]; 

也宣佈屬性強不分配@property (nonatomic,strong) ViewController1 *MethodSave;這應該工作。

並嘗試用駱駝案例聲明變量。

+0

它仍然給我同樣的錯誤,ViewController1是未知的類型名稱。可能我沒有正確導入。在ViewController2我#import「ViewController1」。以爲這是我需要的一切? – burrGGG 2014-10-08 14:37:50

+0

@burrGGG我已經更新了我的答案,請再試一次,讓我知道是否有問題。 – iHulk 2014-10-08 14:54:56

0

你還在ViewController1中導入ViewController2嗎? 根據我自己的Google搜索,你的問題可能是循環依賴。

如果是這種情況,不是在ViewController2中導入ViewController1,而是在ViewController2.h中創建一個協議,並用符合該協議的ID替換ViewController1屬性。

添加在ViewController2.h如下:

@protocol ViewController2Delegate<NSObject> 
@required 
-(void)saveLocation; 
@end 

@interface ViewController2:UIViewController 
@property id<ViewController2Delegate> *delegate; 
@end 

,並添加這ViewController1.h:

@interface ViewController1:UIViewController <ViewController2Delegate> 

,然後設置委託ViewController1的一個實例(如果你加載ViewController1中的ViewController2,它會是self),並確保從ViewController2中刪除導入。

我正在做這個記憶,所以它可能無法複製和粘貼,但希望這可以指出你在正確的方向。

0

試試這個,

ViewController1 *MethodSave = [[ViewController1 alloc]init]; 
[MethodSave saveLocation]; 
相關問題