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

ボタンのタイトルを変更して、目的のボタンが実際に戻っていることを確認してください。

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

タグのロギングを信頼して、取得していると思われる正確なボタンが返されていることを確認します。これにより、問題が絞り込まれるはずです。

また、ボタンとその親ビューの userInteractionEnabled が YES に設定されていることを確認します。

于 2012-05-02T17:06:50.083 に答える
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 に答える