2012-03-16 15 views
5

UITableView में अंतर्निहित एनीमेशन है जिसमें एक सेल को फिर से व्यवस्थित करने के बाद, यह रिक्त स्थान में धीरे-धीरे रहता है। क्या उस एनीमेशन समाप्त होने के बाद किसी प्रकार की अधिसूचना में टैप करने के लिए कोई जगह है? मैं पूरा होने पर एक विधि को कॉल करना चाहता हूं। फिलहाल मैं performSelector:withObject:afterDelay: का उपयोग कर रहा हूं जो इस समय ठीक काम करता है, लेकिन मैं जानना चाहता हूं कि एनीमेशन पूर्ण में टैप करना संभव है या नहीं।
दोहराने के लिए, मैं कस्टम एनीमेशन के बारे में बात नहीं कर रहा हूं, केवल यूआईटीबल व्यू में निर्मित एनीमेशन।UITableView के बाद एनीमेशन पूर्ण अधिसूचना मैन्युअल रूप से

मैं चारों ओर खोज कर रहा हूं और एक उत्तर इकट्ठा नहीं कर सकता।

+0

संभावित डुप्लिकेट: http://stackoverflow.com/questions/7198633/how-can-i-tell-when-a-uitableview-animation-has-finished – fishinear

उत्तर

0

यदि आपके पास तालिका दृश्य डेटा स्रोत तक पहुंच है, तो यह वास्तव में आसान हो जाता है। आपको बस तालिका दृश्य कक्षों पर एक संपत्ति सेट करना होगा और डेटा स्रोत में एक विधि लागू करना होगा। आपके द्वारा सेट की जाने वाली संपत्ति

tableViewCell.showsReorderControl = YES; 

जो आपने पहले ही सेट कर दी है।

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath; 

जब भी उपयोगकर्ता विज्ञप्ति सेल पुनर्क्रमित जा रहा है, तालिका दृश्य डेटा स्रोत बताना होगा वास्तविक डेटा को पुन: व्यवस्थित करने के लिए: अब तुम सब करने की है डेटा स्रोत में इस पद्धति को लागू है। आपको बस इतना करना है इस पर निर्भर है, इसलिए जैसे:

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath { 
    [self doMyFavoriteThing]; 
} 

सब है कि! बेशक, यह एनीमेशन के अंत में सख्ती से नहीं बोल रहा है, लेकिन यह एक ही घटना के लिए नीचे आता है।

4

मुझे एहसास है कि यह प्रश्न प्राचीन है, लेकिन जब भी मैं @Gobot के समान समस्या का उत्तर ढूंढने की कोशिश कर रहा था तब भी मैं उस पर ठोकर खाई। खैर, पता चला है कि एक सरल समाधान है। क्या @Mitchell Vanderhoeff कहा की तरह, आप विधि tableview कि इसके बारे में एक पंक्ति स्थानांतरित करने के लिए है से नोटिस प्राप्त करने के लिए अपने tableview प्रतिनिधि में

- (void)tableView:(UITableView *)tableView 
     moveRowAtIndexPath:(NSIndexPath *)fromIndexPath 
     toIndexPath:(NSIndexPath *)toIndexPath { 
     [CATransaction setCompletionBlock:^{ 
      // Completion code here 
     }]; 
} 

डालना होगा। कुंजी हालांकि CATransaction setCompletionBlock है। यह आपको अंतर्निहित एनीमेशन लेनदेन पर एक समापन ब्लॉक सेट करने देगा जो तालिका दृश्य पंक्ति आंदोलन के लिए कर रहा है। जैसा कि नाम का तात्पर्य है, एनीमेशन पूरा होने के बाद जो भी आप उस ब्लॉक में डालते हैं उसे निष्पादित किया जाएगा।

यदि आप पहले से ही अपने प्रोजेक्ट का हिस्सा नहीं हैं तो आपको क्वार्ट्जकोर फ्रेमवर्क शामिल करना होगा।

संबंधित मुद्दे