iOS:类的实例返回一个视图,此视图中的按钮不';行不通

iOS:类的实例返回一个视图,此视图中的按钮不';行不通,ios,Ios,我有一个类,它创建了一个带有按钮的视图。在另一个视图控制器中,我创建了一个实例,并调用create方法,该方法返回包含按钮的视图,并将其显示在视图控制器中 然而,每当我试图按下按钮时,程序就会崩溃 下面是我创建实例的类: #import "Test.h" @implementation Test - (UIView*)createView:(int)x y:(int)y { UIView *view = [[UIView alloc] initWithFrame:CGRectMak

我有一个类,它创建了一个带有按钮的视图。在另一个视图控制器中,我创建了一个实例,并调用create方法,该方法返回包含按钮的视图,并将其显示在视图控制器中

然而,每当我试图按下按钮时,程序就会崩溃

下面是我创建实例的类:

#import "Test.h"

@implementation Test

- (UIView*)createView:(int)x  y:(int)y {
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(x, y, 200, 75)];
    view.backgroundColor = [UIColor redColor];

    UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [button addTarget:self
               action:@selector(testMethod) forControlEvents:UIControlEventTouchUpInside];
    [button setTitle:@"Button" forState:UIControlStateNormal];
    button.frame = CGRectMake(10.0, 10.0, 160.0, 40.0);
    [view addSubview:button];

    return view;
}

- (void)testMethod {
    NSLog(@"Button Pressed");
}

@end
下面是我在另一个视图控制器中创建它的实例的时候

- (void)viewDidLoad
{
    [super viewDidLoad];

    //Add color picker to screen
    Test *testView = [[Test alloc] init];
    [[self view] addSubview: [testView createView:100 y:100]];
}

有人知道这是否可能吗?或者我可能做错了什么,谢谢。

崩溃是因为您已将
测试
实例作为按钮处理程序。但是,
Test
实例在
viewDidLoad
方法的末尾被释放。因此,按钮向左指向解除分配的处理程序。按下按钮时,应用程序崩溃,因为
Test
实例不存在


更新视图控制器代码,使
Test
实例保存在实例变量中,而不是
viewDidLoad
方法中的局部变量。这将修复崩溃。

比我快5秒。@rmaddy,我还有另一个问题f或ya,有没有办法在我单击该按钮时,更改ViewController类内部变量的值?这实际上是一个完全独立的问题,超出了本问题的范围。基本上,您需要为
Test
类定义协议和委托。然后,视图控制器可以是代理。当通知按下按钮时,视图控制器可以执行任何适当的操作。发布一个新问题,你需要更多的帮助。