选择器 'circleOfButtons:buttonSize:radius:' 没有已知的 class 方法

No known class method for selector 'circleOfButtons:buttonSize:radius:'

SGView中的一个函数circleOfButtons:buttonSize:radius:下面)是从ParentView调用的,我希望ParentView定义每当 ParentViewSGView.

发送消息时,SGView 中的值

这是实现文件。

#import <UIKit/UIKit.h>
#import “ParentView.h"
#import "SGView.h"

@implementation ParentView : UIView

- (id)initWithFrame:(CGRect)frame {
    self                        = [super initWithFrame:[UIScreen mainScreen].bounds];
    if (self) {

    self.backgroundColor        = [UIColor lightGrayColor];

    int     count               = 5;
    CGFloat size                = 80.0;
    CGFloat radius              = 68;

    SGView *myView              = [SGView circleOfButtons:count buttonSize:size radius:radius];
    [self addSubview:myView];
    }
return self;
}

SGView将多个UIButton排成一圈,本质上是这样的

#import "SGView.h"

@implementation SGView : UIView

+(id)circleOfButtons:(int)buttonCount buttonSize:(CGFloat)buttonSize circleRadius:(CGFloat)circleRadius
    {
    UIView *multipleViews       = [self new];

    // … circular geometry …
    [multipleViews addSubview:circleButton];
    }
    return multipleViews;
}
@end

SGView *myView 行的错误消息是:

No known class method for selector 'circleOfButtons:buttonSize:radius:'

我的猜测是编译器需要在接口中声明。我正在研究 these tutorials trying to decide what the interface file should look like and though there are 6 SO questions that may already have answered my question, only this one 有一个似乎不太相关的例子。

这是我的界面文件。

#import <UIKit/UIKit.h>
#import "ViewController.h"
#import "SGView.h"

@interface ParentView : UIView {
}

+(id)circleOfButtons:(int)buttonCount buttonSize:(CGFloat)buttonSize circleRadius:(CGFloat)circleRadius;

@end

谁能举个例子说明这个接口文件应该是什么样子的?谢谢。

更新

这里是SGView.h(已修改)

#import <UIKit/UIKit.h>
@interface SGView : UIView {
}
+(id)circleOfButtons:(int)buttonCount buttonSize:(CGFloat)buttonSize circleRadius:(CGFloat)circleRadius;
@end

我也注意到如果声明

        SGView *myView              = [SGView circleOfButtons:count buttonSize:size radius:radius];

改为

        SGView *myView              = [self circleOfButtons:count buttonSize:size radius:radius];

错误变为

No visible @interface for 'ParentView' declares the selector 'circleOfButtons:buttonSize:radius:'

之前是

No known class method for selector 'circleOfButtons:buttonSize:radius:'

SGView.h 文件中声明 +(id)circleOfButtons:(int)buttonCount buttonSize:(CGFloat)buttonSize circleRadius:(CGFloat)circleRadius。 现在您将获得 ParentView class.

中的方法

编码愉快 :) .

您正在呼叫

  SGView *myView              = [SGView circleOfButtons:count buttonSize:size radius:radius];

应该是

SGView *myView              = [SGView circleOfButtons:count buttonSize:size circleRadius:radius];