iOS选择器对我的情况不起作用,为什么?

时间:2013-08-06 10:12:10

标签: ios objective-c selector

在我的情况下,class CUIViewController子类class A and BUIView子类class A有一个UIButton。我写了一些如下代码。

class C:

中的

B *b = [[B alloc] init];
[self.view addSubView:b];

A *a = [[A alloc] initWithTarget:self action:@Selector(methodX:)];
[b methodY:a];
class B中的

- (void)methodY:(A *)a
{
   [sef addSubView:a];
}
class A中的

- (id)initWithTarget:(id)target action:(SEL)action
{
   self = [super initWithFrame:frame];
   UIButton *btn = [[UIButton alloc] init];
   [btn addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];
   [self addSubView:btn];
   return self;
}

methodX:中的class C未执行。

我的代码有问题吗?
选择器如何在objective-c中工作?  谢谢!

4 个答案:

答案 0 :(得分:0)

你写道,A是UIView的子类。那你怎么能通过

实例化它呢?
 [[C alloc]init]

在C的情况下是UIViewController?你确定 - 在运行时 - 变量 * a UIView 类型吗?

答案 1 :(得分:0)

这段代码似乎有很多错误。 首先,

如何使用此代码分配C类对象?

A *a = [[C alloc] initWithTarget:self action:@Selector(methodX:)];

其次,如果C是UIViewController的子类,那么如何在此方法中将其添加到self?在这里,自我可能是Class B的对象,UIView

- (void)methodY:(C *)c
{
   [sef addSubView:c];
}

答案 2 :(得分:0)

您的代码在我的计算机上运行良好。所以我想你只需要添加A的按钮,这意味着你的按钮的框架不在A的框架中

答案 3 :(得分:-1)

在C班中

A *a = [[A alloc] initWithTarget:self action:@Selector(methodX:)];

目标不对.......