在一个程序中,我有一个名为PullLeftMenu.h/.m
的课程。
在ViewController.m
我正在呼叫PullLeftMenu
,如此:
PullLeftMenu *openMenu = [[PullLeftMenu alloc] init];
[openMenu classMethodHere];
因此,只需运行带参数的方法。但是,类PullLeftMenu
的此方法的一部分是向显示的子视图添加按钮。每个按钮都分配有自己的方法进行调用。比如说,按钮1调用方法btnUsefulStuff
。
我在btnUsefulStuff
类和PullLeftMenu
中都放置了ViewController.m
方法代码,但都没有被触发 - 而是导致内存崩溃。
PullLeftMenu.m中按钮的代码
UIButton *btnUsefulStuff = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btnUsefulStuff.frame = CGRectMake(10.0, 180.0, 160.0, 10.0);
[btnUsefulStuff setTitle:@"Useful Stuff" forState:UIControlStateNormal];
[btnUsefulStuff addTarget:self action:@selector(btnUsefulStuff) forControlEvents:UIControlEventTouchUpInside];
btnUsefulStuff.titleLabel.font = [UIFont fontWithName:@"KhmerUI" size:16];
btnUsefulStuff.titleLabel.textColor = [UIColor colorWithHexString:@"3a589b"];
[secondView addSubview:btnUsefulStuff];
以下是方法:
-(void)btnUsefulStuff{
NSLog(@"button");
}
问题是,我不知道在哪里放置方法-(void)btnUsefulStuff
,无论我放在哪里,它似乎都没有被触发,应用程序崩溃并带有内存警告。错误是:
Thread 1: EXC_BAD_ACCESS
答案 0 :(得分:1)
由于此行[btnUsefulStuff addTarget:self action:@selector(btnUsefulStuff) forControlEvents:UIControlEventTouchUpInside];
位于PullLeftMenu
,您说目标是self
,这就是您需要的方法。
我怀疑您的问题是您已将openMenu
作为本地变量。将其更改为ViewController
内的强大属性,以便当有人点击按钮时它仍在内存中。