1

在我的情况下,是class C子类,是 的子UIViewController,具有. 我写了一些如下代码。class A and BUIViewclass AUIButton

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:inclass C没有执行。

我的代码有什么问题吗?
选择器如何在 Objective-C 中工作?
谢谢!

4

4 回答 4

0

你的代码在我的电脑上运行得很好。所以我猜你只是将按钮添加出来A,这意味着你的按钮框架不在A's frame

于 2013-08-09T03:30:50.697 回答
0

您写道,A 是 UIView 的子类。那你怎么能通过一个实例化它

 [[C alloc]init]

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

于 2013-08-06T10:20:07.810 回答
0

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

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

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

其次,如果 C 是 的子类UIViewController,您如何在此方法中将其添加到 self ?这里 self 大概是Class Ba的对象UIView

- (void)methodY:(C *)c
{
   [sef addSubView:c];
}
于 2013-08-06T10:20:25.143 回答
-1

在 C 类。

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

目标不对……

于 2013-08-09T01:53:39.053 回答