【问题标题】:No known class method for selector 'circleOfButtons:buttonSize:radius:'选择器'circleOfButtons:buttonSize:radius:'没有已知的类方法
【发布时间】:2017-03-31 10:46:12
【问题描述】:

SGView下面)中的函数circleOfButtons:buttonSize:radius: 是从ParentView 调用的,我希望ParentView 定义SGView 中的值,只要ParentView 发送消息到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 行 - 是:

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

我的猜测是编译器想要在接口中声明。我正在通过these tutorials 尝试确定接口文件应该是什么样子,虽然有 6 个 SO 问题可能已经回答了我的问题,但只有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];

错误变为

“ParentView”没有可见的@interface 声明选择器“circleOfButtons:buttonSize:radius:”

以前是

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

【问题讨论】:

  • 你必须贴花 +(id)circleOfButtons:(int)buttonCount buttonSize:(CGFloat)buttonSize circleRadius:(CGFloat)circleRadius;在 SGView.h 类中
  • 仁,@ron27,我在 SGView 中声明并在 ParentView 中删除了声明,但错误仍然存​​在
  • 你在SGView.h文件中写了什么?
  • 仁,看看我的更新

标签: ios objective-c uiview selector


【解决方案1】:

你在打电话

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

应该是

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

【讨论】:

【解决方案2】:

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

编码愉快 :) .

【讨论】:

    猜你喜欢
    • 2013-11-21
    • 2014-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多