为什么我不能从另一个类调用方法

时间:2014-03-26 05:19:13

标签: ios objective-c uiviewcontroller

我有一个NSObject形式的自定义类(Packages)。我有很多这个对象的实例。在初始化每个实例时,我从我的UIViewController名称ViewController传递self。

在这些包的代码中,我想从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:'
}

其中view2为UIViewController *view2,并通过此类的init方法将其设置为view2 = object

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

为什么我收到此错误:

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

4 个答案:

答案 0 :(得分:1)

如果view2是您的自定义类型对象,那么您只需执行此操作:

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

在viewController中导入YourCustomClass.

答案 1 :(得分: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;

答案 2 :(得分:0)

我认为你需要添加

-(void)toThisView:(UIView *)someView

到你的viewController.h文件,否则它将无法从任何其他类中看到。

答案 3 :(得分:0)

首先在viewController中导入自定义类。 创建一个类的对象。

调用方法就像这样。

 [object toThisView:YourPrameter];

在调用之前,还要在类.h文件中声明此方法,如下所示

-(void)toThisView:(UIView *)someView;