2012-03-02 6 views
0

私はいくつかのUIImageViewsを持つUITableViewCellsを持っています。イベントを親のUITableViewControllerに渡して、それを処理できるようにします。どのようにUIIableViewControllerに情報を送って、どのUIImageViewがイベントをトリガしたかを知らせることができます。以下のコードを使用すると、UITableViewController touchesEndedは、子UITableViewCellsのいずれかがイベントを発生させたときにトリガーされます。 UIEventで情報を渡す方法はありますか?どのイベントがnextResponder経由で親に渡されるのかを特定する方法はありますか?

イベント処理についてのより良い方法はありますか?

//UITableViewCell 
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch *touch = [touches anyObject]; 

    if ([touch view] == imageView) 
    { 
     [[self nextResponder] touchesEnded:touches withEvent:event]; 
    } 
} 

//UITableViewController 
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch *touch = [touches anyObject]; 

    NSLog(@"clicked"); 
} 

答えて

0

迅速かつ汚い方法について、あなたはobjc_setAssociatedObjectとにObjCランタイムのobjc_getAssociatedObject使用することができます。

// static char key; 
objc_setAssociatedObject(event, &key, self, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 

やオブジェクトを取得::

#import <objc/runtime.h> 

は、オブジェクトに設定

id yourInterestObj = objc_getAssociatedObject(event, &key); 

をしかし、私は、それはMVCを破ることが、この方法はお勧めしません。私はあなたがこの状況に対処するためにResponder Chain patterを使うべきだと思って、-sendAction:to:from:forEvent:のドキュメントをUIApplicationにチェックしてください。

+0

ありがとう、私はまた、代理人を使用して目標を達成することができました。私はデリゲートプロトコルをセットアップし、かなりうまくいっています(送信者オブジェクトの識別子データも格納されています)。 – Ryan

関連する問題