2011-06-08 10 views
8

यूआईटीबलव्यू के एनीमेशन को पूरा करने के बाद मैं कार्रवाई कैसे कर सकता हूं?आईओएस यूआईटीबलव्यू टेबल एनीमेशन पूर्ण होने के बाद कार्रवाई कैसे करें

मैं एक UITableview सेल को कम करने और सेल के एक सबव्यू को हटाने का प्रयास कर रहा हूं जो संकोचन के बाद दिखाई नहीं दे रहा है। सेल को कम करने के लिए, मैं [tableview startUpdates] और [tableview endUpdates] को कॉल कर रहा हूं, और UITableview के theheightForRowAtIndexPath डेटासॉर विधि द्वारा लौटाए गए सेल की ऊंचाई को बदल रहा हूं।

चुनौती यह है कि मुझे सिकुड़ने को पूरा करने से पहले सबव्यूव दृष्टि से बाहर है, इसलिए मुझे कम करने के लिए टेबलव्यू की आवश्यकता है। यदि मैं कोड को [tableview endUpdates] को कॉल करने के बाद (या पहले या बीच में) के बाद सेल से सबव्यू को हटाने के लिए कोड डालता हूं तो सबव्यू बहुत जल्द हटा दिया जाता है (यह एनीमेशन की प्रतीक्षा नहीं करता है) और यह मजाकिया लग रहा है।

मेरे सोचा मैं एक कॉलबैक है कि एनीमेशन के पूरा होने पर चलाता है सेटअप करने के लिए सक्षम होने के लिए चाहते हैं, और कॉलबैक

+3

सबसे अच्छी बात मैं अब तक मिल गया है थोड़े समय देरी पर performSelector चल रहा है: [आत्म performSelector: @selector (removeSubmenuViewFromCellView) withObject: afterDelay शून्य: .3]; – kris

+1

हो गया। – kris

उत्तर

19

इसके बारे में क्या?

[CATransaction begin]; 

[CATransaction setCompletionBlock:^{ 
    // animation has finished 
}]; 

[tableView beginUpdates]; 
// shrink the cells 
[tableView endUpdates]; 

[CATransaction commit]; 
+0

सुझाव रूडोल्फ के लिए धन्यवाद। मुझे यकीन नहीं है कि मुझे इसकी समीक्षा करने का मौका मिलेगा, क्योंकि यह थोड़ी देर हो गया है क्योंकि मैंने इस प्रश्न पर काम किया है। हालांकि अगर कोई और टिप्पणी कर सकता है कि यह एक अच्छा समाधान है, या मैं इसे आज़माता हूं, तो मैं इसे उत्तर के रूप में चिह्नित करूंगा। इस बीच, +1। – kris

+0

यह एक अच्छा समाधान है। बस मेरे लिए काम किया जहां मुझे एक टेबल पंक्ति एनिमेटेड होने के बाद ही चलाने के लिए कोड की आवश्यकता थी। – Andrew

+2

अच्छा समाधान, यह उत्तर स्वीकार किया जाना चाहिए। – Bringo

-4

NSNotifications वर्ग का उपयोग करते हुए प्रयास करें में subview को दूर है। कुछ होने के बारे में अधिसूचनाएं पोस्ट करें, और बाद में कुछ हुआ है। आप 'होने के बारे में' और 'हुआ है' के बीच टॉगल करने के लिए एक ही अधिसूचना विधि में एक बूल का उपयोग कर सकते हैं।

+0

को क्षमा करने के लिए धन्यवाद (क्षमा करें अगर यह टिप्पणी डुप्लिकेट है) मेरी समझ यह है कि मौजूद एक यूआईटीबलव्यू अधिसूचना इस से संबंधित नहीं है, इसलिए इसके लिए पंजीकरण करने से कोई मदद नहीं मिलेगी। जहां तक ​​अधिसूचना स्वयं बना रही है, मैं चाहता हूं कि तालिकादृश्य के बाद एनीमेशन खत्म होने के बाद अधिसूचना पोस्ट की जाए, लेकिन मूल समस्या की स्थिति के अनुसार, मुझे अपना कोड चलाने के तरीके के बारे में पता नहीं है (अधिसूचना पोस्ट करने के लिए या अन्यथा) उस बिंदु पर। – kris

+0

अधिसूचना पोस्ट करना बहुत आसान है .. इसके लिए सेब डॉक्स की जांच करें। उदाहरण के साथ स्पष्ट और सटीक स्पष्टीकरण प्रदान किया जाता है। अपने काम के साथ सबसे अच्छा। – SeriousSam

+0

मैं बस इतना कह रहा हूं कि अधिसूचनाएं इस स्थिति में उपयोगी नहीं होंगी :) हालांकि सभी प्रतिक्रियाओं के लिए धन्यवाद! – kris

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