我正在做一个包含viewController类(PhotoListViewController)的iPhone ap。此viewController的视图有一个子视图,其中包含一个作为子视图附加的按钮。我正在尝试使用addTarget:action:forControlEvent方法来调用PhotoListViewController类的实例方法,以便在按下按钮时执行操作但该方法未被调用。有关如何使这项工作的任何想法?
这是相关的代码。我知道你的第一个虽然是我为什么要嵌套子视图,但这只是我的程序的一个提炼版本 - 有理由我正在进行嵌套。我知道可能有其他方法来设置程序,所以我不必这样做嵌套,但我真正的问题是 - 为什么这不起作用?
/ 代码 /
@implementation PhotoListViewController
- (void)loadView {
[super viewDidLoad];
//load elements into the viewController
//first create the frame
CGRect frameParent = CGRectMake(0, 0, 0, 0);
UIView *viewPerson = [[UIView alloc] initWithFrame:frameParent];
CGRect frameChild = CGRectMake(0, 20, 0, 0);
UIView *newView = [[UIView alloc] initWithFrame:frameChild];
UIButton *btnShow = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btnShow.frame = CGRectMake(230, 120, 80, 30);
[btnShow setTitle:@"View!" forState:UIControlStateNormal ];
[btnShow addTarget:self
action:@selector(viewPhoto_click:)
forControlEvents:UIControlEventTouchUpInside];
[newView addSubview:btnShow];
[viewPerson addSubview:newView];
[newView release];
[self setView:viewPerson];
[viewPerson release];
}
- (void)viewPhoto_click:(UIButton*)sender {
NSLog(@"HI");
}
答案 0 :(得分:1)
它可能没有关系,但viewPerson
和newView
的宽度和高度均为0.您可能希望为这些视图提供非空大小({的第3和第4个参数{1}})。
答案 1 :(得分:1)
action:@selector(viewPhoto_click:)
forControlEvents:UIControlEventTouchUpInside];
可能是复制粘贴拼写错误,但您是否尝试删除选择后的viewPhoto_click
之后的内容?
另外。在大多数示例中,事件处理程序看起来像这样。
- (void) viewPhoto_click: (id)sender
不确定它是否有任何不同