在我的情况下,class C
是UIViewController
的子类,class A and B
是UIView
的子类 ,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中工作?
谢谢!
答案 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)
。
A *a = [[A alloc] initWithTarget:self action:@Selector(methodX:)];
目标不对.......