从视图控制器调用视图方法

时间:2010-11-15 21:15:20

标签: iphone

这是一个简单的问题,我相信我过去一直在努力。我正在尝试在视图中调用方法

#import <UIKit/UIKit.h>

@interface View : UIView {
}

-(void)spinAction;

@end

来自视图控制器

#import <UIKit/UIKit.h>
#import "View.h"

@interface layers3ViewController : UIViewController {   
    IBOutlet View *view;
}

-(IBAction)spinButton:(id)sender;

@end

通过方法

-(IBAction)spinButton:(id)sender{
    [view spinAction];
}

但无法开展工作。使用Interface Builder将所有内容组合在一起。我在这里做了一些根本错误的事吗?之前的代码通过put

工作
[self.view spinAction]

虽然有错误消息,但在这里工作甚至没有。任何提示/建议超过欢迎。

2 个答案:

答案 0 :(得分:2)

view已经是UIViewController的一个属性,它是IBOutlet所以我不确定在接口生成器中建立关联时会设置view。 试试这个

#import <UIKit/UIKit.h>
#import "View.h"

@interface layers3ViewController : UIViewController {   
    //IBOutlet View *view;
}

-(IBAction)spinButton:(id)sender;

@end

-(IBAction)spinButton:(id)sender
{
    View *myView = (View *)self.view;
    [myView spinAction];
}

当然,在Interface Builder中,请确保与view商店相关联的对象是您的View类的实例。

答案 1 :(得分:1)

self.view返回类UIView的对象,您可能不应该尝试更改它。您需要创建一个类View的新插座,并在界面构建器中将其连接起来。

@interface layers3ViewController : UIViewController {   
    IBOutlet MyView *myView;
}
@property (nonatomic,retain) IBOutlet MyView *myView;


-(IBAction)spinButton:(id)sender;

@end

在您的实现中应该如下所示:

@implementation layers3ViewController
@synthesize myView;
-(IBAction)spinButton:(id)sender{
    [self.myView spinAction];
}

不要忘记将Interface Builder中的myView插座连接到您的视图。