2011-08-22 12 views
18

मैं UITableView पर स्वाइप जेश्चर कर रहा हूं और सेल की इंडेक्सपैथ जानना चाहता हूं जिस पर मेरी उंगलियां वर्तमान में हैं यानी सेल से किए गए जेस्चर को स्वाइप करें।स्वाइप जेश्चर पर सेल इंडेक्सपैथ प्राप्त करना UITableView

मैं indexPath की आवश्यकता के रूप में मुझे लगता है कि चयनित सेल के लिए जानकारी दिखाने के लिए है ..

अग्रिम धन्यवाद ..

उत्तर

53

तो क्या आप अनिवार्य रूप से की जरूरत है मेज पर कड़ी चोट इशारा से सेल प्राप्त करने के लिए है? ठीक है। आपको indexPath जानने की आवश्यकता नहीं है। इस के बाद

UISwipeGestureRecognizer *showExtrasSwipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(cellSwipe:)]; 
showExtrasSwipe.direction = UISwipeGestureRecognizerDirectionRight; 
[tableView addGestureRecognizer:showExtrasSwipe]; 
[showExtrasSwipe release]; 

जब वास्तविक कड़ी चोट होता है आप इसे करने के लिए हैंडलर लगाने की जरूरत है - पहले tableView तो जैसे पर कड़ी चोट परिभाषित करते हैं। उसके लिए कोशिश इस-

-(void)cellSwipe:(UISwipeGestureRecognizer *)gesture 
{ 
    CGPoint location = [gesture locationInView:tableView]; 
    NSIndexPath *swipedIndexPath = [tableView indexPathForRowAtPoint:location]; 
    UITableViewCell *swipedCell = [tableView cellForRowAtIndexPath:swipedIndexPath]; 

    //Your own code... 
} 

तो क्या हम किया है पहले UITableView (नहीं UITableViewCell) के लिए एक SwipeGestureRecognizer देते है। उसके बाद जब UITableView पर स्वाइप होता है, तो मुझे सबसे पहले UITableView में इशारा हुआ जहां समन्वय प्राप्त होता है। इसके बाद, इस निर्देशांक का उपयोग करके मुझे UITableView में स्वाइप की गई पंक्ति की IndexPath मिलती है। अंत में IndexPath का उपयोग करके मुझे UITableViewCell मिलता है। सरल वास्तव में ..

नोट: मुझे यह बहुत बार पूछा गया है। तो इस स्पष्टीकरण को जोड़कर मैंने SwipeGestureRecognizerUITableView पर क्यों उपयोग किया और प्रत्येक व्यक्ति UITableViewCell पर नहीं।

मैं प्रत्येक UITableViewCell पर SwipeGestureRecognizer संलग्न कर सकता था। मैंने ऐसा नहीं किया क्योंकि मुझे प्रत्येक सेल के लिए अलग SwipeGestureRecognizer संलग्न करना होगा। तो अगर मेरे UITableView में 1000 सेल्स थे तो मुझे 1000 SwipeGestureRecognizer ऑब्जेक्ट्स बनाना होगा। यह अच्छा नहीं है। मेरे उपर्युक्त दृष्टिकोण में मैं सिर्फ एक SwipeGestureRecognizer बनाता हूं और यह करता है।

+1

बहुत बहुत धन्यवाद ... यह काम किया। निश्चित रूप से –

+2

ने किया। कोड के इस विशेष टुकड़े ने लाखों स्वाइप को पहले से ही देखा है! –

+0

मुझे लगता है कि आपको पिन किए गए इंडेक्सपाथ को स्वाइप करने के लिए बदलना होगा इंडेक्सपाथ – DenTheMan

-1

आप इस स्रोत कोड की जाँच की थी? : https://github.com/thermogl/TISwipeableTableView

यह वास्तव में आपकी मदद कर सकता है, यह एक "स्वाइप करने योग्य" tableview की एक पूरी कार्यान्वयन है ...

0

यदि आप 'हटाने के लिए स्वाइप करें' को लागू करने की कोशिश कर रहे हैं (क्षैतिज दिशा में स्वाइप करें), तो आपको पहिया को फिर से आविष्कार करने की आवश्यकता नहीं है। बस अपने UITableViewController प्रतिनिधि में विधि commitEditingStyle:forRowAtIndexPath: को असम्बद्ध करें।