iOS:类的实例返回一个视图,此视图中的按钮不';行不通
我有一个类,它创建了一个带有按钮的视图。在另一个视图控制器中,我创建了一个实例,并调用create方法,该方法返回包含按钮的视图,并将其显示在视图控制器中 然而,每当我试图按下按钮时,程序就会崩溃 下面是我创建实例的类:iOS:类的实例返回一个视图,此视图中的按钮不';行不通,ios,Ios,我有一个类,它创建了一个带有按钮的视图。在另一个视图控制器中,我创建了一个实例,并调用create方法,该方法返回包含按钮的视图,并将其显示在视图控制器中 然而,每当我试图按下按钮时,程序就会崩溃 下面是我创建实例的类: #import "Test.h" @implementation Test - (UIView*)createView:(int)x y:(int)y { UIView *view = [[UIView alloc] initWithFrame:CGRectMak
#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
类定义协议和委托。然后,视图控制器可以是代理。当通知按下按钮时,视图控制器可以执行任何适当的操作。发布一个新问题,你需要更多的帮助。