我有一个UIbutton,它调用同一个类中的方法,我使用@selector并传递方法名称,我设置了一个断点,并注意到根本没有达到该方法,我写了这个代码和我认为它工作正常,但它永远不会到达方法体:
- (IBAction)setEndTime:(id)sender {
[self performSegueWithIdentifier:@"showEndTimePicker" sender:sender];
UIViewController *TimePickerVC=[self.storyboard instantiateViewControllerWithIdentifier:@"setEndTime"];
packtimePicker=(UIDatePicker*)[TimePickerVC.view viewWithTag:2];
NSLog(@"PickerTag%i",packtimePicker.tag);
self.finishedTime=packtimePicker.date;
// NSLog(@"Date returned is ---> %@",finishedTime);
UIButton *btn=(UIButton*)[TimePickerVC.view viewWithTag:3];
NSLog(@"Button Tag%i",btn.tag);
[btn addTarget:self action:@selector(setSelectedValueToAttr:) forControlEvents:UIControlEventTouchUpInside];
方法:
-(void)setSelectedValueToAttr:(UIButton *) sender{
finishedTime=packtimePicker.date;
NSLog(@"Time returned----> %@",finishedTime);}
}
答案 0 :(得分:0)
您是否检查过是否收到了正确的按钮?你的日志显示什么?它应该是ButtonTag3
- 是这样的吗?
类中的方法setSelectedValueToAttr:
是否由self
引用?
如果一切正确,你的按钮可能只是因为你的视图结构而没有得到任何接触。
答案 1 :(得分:0)
尝试更改按钮的标题以确认您确实找回了所需的按钮。
[btn setTitle:@"test" forState:UIControlStateNormal];
我不相信标签记录确认您正在取回您认为正在获得的确切按钮。这应该缩小问题的范围。
另外,确认按钮及其父视图的userInteractionEnabled设置为YES。
答案 2 :(得分:0)
您肯定分配了错误的标签号。查看下面的示例,在将其转换为UIButton之前检查类的类型。
UIView *someView = [self.view viewWithTag:5];
if([someView isKindOfClass:[UIButton class]])
{
UIButton *button = (UIButton *) someView;
NSLog(@"uibutton");
}
else
{
// some other control
}