1

我有一个 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);}
 }
4

3 回答 3

0

你检查过你是否得到了正确的按钮吗?你的日志显示什么?应该是ButtonTag3——是这样的吗?

类中的方法是否被setSelectedValueToAttr:引用self

如果所有这些都是正确的,那么您的按钮可能只是因为您的视图结构而没有任何接触。

于 2012-05-02T16:30:09.223 回答
0

您肯定分配了错误的标签号。查看下面的示例,我在将其转换为 UIButton 之前检查了类的类型。

 UIView *someView = [self.view viewWithTag:5];

    if([someView isKindOfClass:[UIButton class]])
    {
        UIButton *button = (UIButton *) someView; 

        NSLog(@"uibutton");
    }
    else 
    {
        // some other control 
    }
于 2012-05-02T19:18:05.677 回答
0

尝试更改按钮的标题以确认您确实获得了所需的按钮。

[btn setTitle:@"test" forState:UIControlStateNormal]; 

我不相信标签记录来确认您正在取回您认为您正在获得的确切按钮。这应该缩小问题的范围。

此外,确认按钮及其父视图的 userInteractionEnabled 设置为 YES。

于 2012-05-02T17:06:50.083 回答