2012-05-02 13 views
1

私は同じクラスのメソッドを呼び出すUIbuttonを持っています。私は@selectorを使用してメソッド名を渡しました。ブレークポイントを設定し、メソッドisn 「Tが全く到達し、私はこのコードを書いたと私はそれが正常に動作すると思いますが、それは、メソッド本体に到達したことがない: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

btnインスタンスがUIButtonとして定義されているかどうかを確認しましたか? –

答えて

0

は、あなたがチェックしていますが、正しいボタンを取得する場合バック?あなたのログは何を表示していますか?それはButtonTag3であるはずです - それはそれのようですか?

クラス内のsetSelectedValueToAttr:メソッドがselfと呼ばれていますか?

あなたのビュー構造のために、あなたのボタンが正しいと思われるのであれば、たぶんタッチにはならないでしょう。

+0

はい3を返し、メソッドsetSelectedValueToAttr:私は自分自身が参照しているクラスです – chostDevil

0

ボタンのタイトルを変更して、実際に必要なボタンを戻していることを確認してください。

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

あなたが得ていると思う正確なボタンを取得していることを確認するタグのロギングは信頼できません。これにより問題が絞り込まれます。

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

+0

私はビューコントローラ内に1つのボタンしか持っていません – chostDevil

+0

私はこれを試しましたが、ボタンのタイトルは変更されませんでした!何が起こるのですか – chostDevil

+0

あなたの問題があります:あなたはボタンではなく、別のオブジェクトを取り戻しています。 – Joel

0

間違ったタグ番号が割り当てられています。クラスの種類をチェックしてUIButtonにキャストする前の例を見てください。

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

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

     NSLog(@"uibutton"); 
    } 
    else 
    { 
     // some other control 
    } 
関連する問題