मेरे पास शीर्ष पर और नीचे के नीचे की छाया के साथ एक तालिका है (मैट गैलाघर के समाधान का उपयोग करके: http://cocoawithlove.com/2009/08/adding-shadow-effects-to-uitableview.html)। ये UITableView क्लास एक्सटेंशन के लेआउटस्यूब्यूविज़ विधि में जोड़े गए हैं।पंक्ति हटाने के बाद UITableView कॉलबैक एनीमेशन पूर्ण
मैं प्रत्येक मुख्य सेल के नीचे कोशिकाओं को गतिशील रूप से जोड़ता और हटाता हूं (ये अतिरिक्त डेटा प्रदान करते हैं) - चलिए इन "विस्तार" कक्षों को कॉल करते हैं। एक समय में केवल एक ही खुला है। अंतिम मुख्य सेल के नीचे "विस्तार कक्ष" को हटाते समय, एनीमेशन शुरू होने के बाद, छाया अंतिम सेल (विस्तारित सेल के ऊपर) तक ऊपर की ओर बढ़ती है। ऐसा इसलिए होता है क्योंकि layoutSubview विधियां तालिका के अंतिम सेल को हटाने के लिए एनीमेशन को बदलने के लिए मानती हैं RowAtIndexPaths प्रारंभ होती है (एनीमेशन समाप्त होने के बजाए)।
तो, संक्षेप में, मुझे विस्तारित सेल के नीचे छाया को हटाने के तरीके की आवश्यकता है क्योंकि इसे हटाया जा रहा है। ऐसा करने का सबसे अच्छा तरीका सुनिश्चित नहीं है। UITableView अब मानता है कि सेल अंतिम सेल होने के लिए, तो मुझे यकीन है कि (के बाद से UITableView इस प्रकार सेल हो जाता है) भी कैसे सेल प्राप्त करने के लिए नहीं कर रहा हूँ:
NSIndexPath *lastRow = [indexPathsForVisibleRows lastObject];
if ([lastRow section] == [self numberOfSections] - 1 &&
[lastRow row] == [self numberOfRowsInSection:[lastRow section]] - 1)
{
//adds shadow below it here
}
तो भी एनीमेशन की शुरुआत फँसाने यदि UITableView अभी भी "विस्तार" सेल के ऊपर मुख्य सेल को "lastObject" के ऊपर सोचता है तो इसका अधिक उपयोग नहीं होता है।
किसी भी विचार के लिए धन्यवाद।
आप के रूप में 'ऊपर और नीचे छाया जोड़ने की कोशिश की है tableHeaderView' और 'tableFooterView' क्रमशः? निश्चित रूप से इन विचारों को जगह में रखा जाता है और हटाए गए एनीमेशन के बाद तालिका का आकार बदलते समय उचित रूप से स्थानांतरित किया जाता है। – simeon