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

Posted

技术标签:

【中文标题】选择器\'circleOfButtons:buttonSize:radius:\'没有已知的类方法【英文标题】: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文件中写了什么? 仁,看看我的更新 【参考方案1】:

你在打电话

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

应该是

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

【讨论】:

仁,我现在正在添加一个委托以使按钮工作。如果你能抽出一点时间,你可以看看这个***.com/q/43151212/2348597【参考方案2】:

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

编码愉快 :) .

【讨论】:

以上是关于选择器'circleOfButtons:buttonSize:radius:'没有已知的类方法的主要内容,如果未能解决你的问题,请参考以下文章

bootstrap的模态框的使用

如何将样式应用于 Angular 中的自定义组件内容?

winform怎么实现Ctrl键和回车键绑定一个按钮。意思就是同时按住两个键,相当于点击butto

集合视图单元格中的动态按钮宽度

css 顶部按钮 - http://janhoek.com/a-simple-smooth-back-to-top-button-for-genesis/

xml 按钮圆角。字体:https://stackoverflow.com/questions/43494108/round-corner-google-sign-in-button-android