2014-03-26 166 views
0

我有一個NSObject形式的自定義類(包)。我有很多這個對象的實例。在初始化每個這些實例時,我從我的UIViewController名稱ViewController傳遞自己。爲什麼我不能調用另一個類的方法

在這些包的代碼中,我想從ViewController調用一個方法。

-(void)toThisView:(UIView *)someView 
{ 
    [imagesToRender addObject:someView]; 
    [self.mainImageView addSubview:someView]; 
} 

和Packages.m

我有

- (UIView *)handleTapFrom:(UITapGestureRecognizer *)sender 
{ 
    [view2 toThisView:sender.view]; // Error No visible @interface for 'UIViewController' declares the selector 'toThisView:' 
} 

其中視圖2是UIViewController *view2及其經由這個類的init方法設置爲view2 = object

- (id)initWithPath:(NSString *)path andObject:(NSObject *)object

爲什麼我得到這個錯誤:

No visible @interface for 'UIViewController' declares the selector 'toThisView:'

+0

CustomClass之前*視圖2 = ... –

+0

YouCustomTomClassName而不是UIViewController * view2,或者您可以使用執行選擇器方法。 – CoolMonster

回答

1

如果view2是你的自定義類型的對象,那麼你可以簡單地這樣做:

[(YourCustomClass *)view2 toThisView:sender.view];

在viewController中導入YourCustomClass.

+0

你是對的,它需要被鑄造成YourCustomClass。但是我也有一個問題,並且從未導入YourCustomClass的頭文件 – Cripto

0

這聽起來像你有一個名爲ViewController類是UIViewController一個子類。

它還聽起來像你有一個名爲view2實例變量,你可以聲明如下:

@implementation Packages { 
    UIViewController *view2; 
} 

或者可能是這樣的:

@interface Packages : NSObject 

@property (nonatomic, strong) UIViewController *view2; 

您需要聲明view2是一個ViewController,不是UIViewController。換句話說,其聲明如下:

@implementation Packages { 
    ViewController *view2; 
} 

或像這樣:

@interface Packages : NSObject 

@property (nonatomic, strong) ViewController *view2; 
0

我認爲你需要添加

-(void)toThisView:(UIView *)someView 

要將viewController.h文件,否則它不會從其它類可見。

0

第一次在viewController中導入您的自定義類。 創建該類的一個對象。

調用方法就像這樣。

[object toThisView:YourPrameter]; 

調用也聲明這個方法在您的類.h文件中這樣

-(void)toThisView:(UIView *)someView; 
相關問題