viewcontroller1.m:
[view2 buttonClickCheck:cell];
selectormethod1:
-(void)mybuttonClick:(id)sender{
NSLog(@"mybuttonClick");
}
view2.m
- (UITableViewCell*) buttonClickCheck: (UITableViewCell*) cell{
NSLog(@"button click check");
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(cell.frame.origin.x,
cell.frame.origin.y,
self.parentViewController.view.frame.size.width,
frameSize)];
view.backgroundColor = [UIColor redColor];
UIButton *mybutton = [[UIButton alloc] initWithFrame:CGRectMake(view.frame.origin.x,view.frame.origin.y, frameSize, frameSize)];
mybutton.backgroundColor = [UIColor blueColor];
[mybutton addTarget:self action:@selector(mybuttonClick:) forControlEvents:UIControlEventTouchUpInside];
[view addSubview:mybutton];
[cell addSubview:view];
return cell;
}
-(void)mybuttonClick:(id)sender{
NSLog(@"mybuttonClick");
}
问题在于单击按钮,调用viewcontroller1的mybuttonClick方法而不是viewcontroller2,我在viewcontroller中检查自身对象2它引用了viewcontroller2本身。
如果我在viewcontroller1中评论mybuttonclick,单击按钮就不会打印任何内容。
注意:viewcontroller2只是一个类,继承了nsobject,它没有连接到任何故事板,但是viewcontroller1是
答案 0 :(得分:0)
如果ViewController2
是NSObject
类的类型,那么请检查您是否有类似以下的实现
ViewController1.m
并在ViewController2 *view2 = [[ViewController2 alloc] init];
[view2 buttonClickCheck:cell];
中检查,您必须有声明方法,
ViewController2.h
然后你的方法肯定会打电话。
最好根据类型给出类的名称。就像您的课程类型为- (UITableViewCell*) buttonClickCheck: (UITableViewCell*) cell;
那么它的名称应该是NSObject
而不是View2
,这样您就不会感到困惑。 (这是为了您的方便)
答案 1 :(得分:0)
我认为这是因为您将viewcontroller1.m中的单元格传递给view2.m:(UITableViewCell*) buttonClickCheck: (UITableViewCell*) cell
,而不是UIView *view
创建{{1}},将其作为子视图添加到您的单元格中,将您的按钮添加到*视图