的UIButton addTarget不UIViewController中
问题描述:
的子类工作时,此MyViewController.m的UIButton addTarget不UIViewController中
actionNames[0] = @"hoge";
actionNames[1] = @"piyo";
NSMutableArray *actionConts = [[NSMutableArray alloc] init];
for(int i=0; i<[actionNames count]; i++){
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
[btn setFrame:CGRectMake(DEVICE_WIDTH/3 * i, 0, DEVICE_WIDTH/3, 45)];
// actionNames is NSMutableArray
[btn setTitle:actionNames[i] forState:UIControlStateNormal];
[btn setUserInteractionEnabled:YES];
actionConts[i] = btn;
}
// ↓ does not work
[actionConts[1] addTarget:self action:@selector(follow) forControlEvents:UIControlEventTouchUpInside];
// actionSubs is NSMutableArray
for(int i=0; i<[actionConts count]/3; i++){
actionSubs[i] = [[UIView alloc] initWithFrame:CGRectMake(0, 0, DEVICE_WIDTH, 45)];;
}
for(int i=0; i<[actionConts count]; i++){
int sub = floor((float)i/3.0);
[actionSubs[sub] addSubview:actionConts[i]];
}
UIScrollView *actionScr = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 150, 320, 45)];
[actionScr setPagingEnabled:YES];
[actionScr setShowsHorizontalScrollIndicator:NO];
[actionScr setBounces:NO];
actionScr.contentSize = CGSizeMake([actionSubs count] * DEVICE_WIDTH, 45);
for(int i=0; i<[actionSubs count]; i++){
[actionScr addSubview:actionSubs[i]];
}
- 创建一个按钮。 => actionConts [n]的
- addTarget到actionConts [1]
- actionSubs []的alloc
- addSubView actionConts [n]至actionSubs [n]的
- addSubView actionSubs [n]至actionScr
- (addSubView actionScr到DRW)
(DRW是一个UIView实例 “IBOutlet中的UIView * DRW;”。)
当我点击这个按钮,它不工作...(';ω;`)
请帮帮我。 谢谢。
答
你的代码对我很好。我只更换了一些行:
[actionConts[1] addTarget:self action:@selector(follow) forControlEvents:UIControlEventTouchUpInside];
替换:
for (UIButton *button in actionConts) {
[button addTarget:self action:@selector(follow) forControlEvents:UIControlEventTouchUpInside];
}
允许来自阵列加入行动每个按钮。
另外我取代for循环条件由:
for(int i=0; i<[actionConts count]/3; i++)
到:
for(int i=0; i<ceil((float)[actionConts count]/3.0); i++)
,允许具有用于按钮的至少一个上海华。
现在follow
是一种方法,将触发您的每个按钮。您可以设置UIButton.tag
属性来明确哪一个被按下。
这是因为'[actionNames count]'为零,因此您的for循环永远不会运行 – 2014-08-29 14:03:23
actionNames不是actionConts,因此您可以猜测其代码为空 – 2014-08-29 14:04:50
您可以分享将按钮添加到超级视图的代码吗? – 2014-08-29 14:09:36