2010-09-05 10 views
7

मैं जिस तरह से एप्पल की सिफारिश की में संपादित करें बटन का उपयोग करने के लिए अपने ViewController की स्थापना पर उपयोग किया नष्ट करने के लिए ट्रिगर। इस विधि में, मैं editing मान के आधार पर "नई पंक्ति" जोड़ या निकालता हूं (यानी एक पंक्ति जो उपयोगकर्ता एक नई वस्तु जोड़ने के लिए टैप कर सकता है)।स्वाइप बनाम संपादित करें बटन iPhone

जब उपयोगकर्ता किसी सेल (संपादित मोड में नहीं) पर स्वाइप करता है, तो यह setEditing:animated: भी कॉल करता है, जो मेरे कोड को "नई पंक्ति" गलत तरीके से जोड़ने का कारण बनता है। यह केवल नई पंक्ति दिखाना चाहिए जब संपूर्ण दृश्य नियंत्रक संपादन मोड में है (यानी जब संपादन बटन टैप किया जाता है)।

मैं इस समस्या को कैसे हल कर सकता हूं?

उत्तर

12

आप tableView:willBeginEditingRowAtIndexPath: और tableView:didEndEditingRowAtIndexPath:, विधि कॉल बदल जाएगा के व्यवहार लागू करते हैं तो ...

यह अब setEditing:animated: फोन करेगा, आप ऊपर दो विधियों के अंदर सभी संपादन परिवर्तन तर्क संभाल चाहिए। इसके दुष्प्रभाव के रूप में, self.editing अब YES नहीं होगा जब एक स्वाइप इशारा किया जाता है। ऐसा इसलिए है क्योंकि self.editing = YES सेट करने के लिए ज़िम्मेदार है।

+0

क्या आप हटाई गई छवि को बदल सकते हैं? – bluezald

0

मुझे नहीं पता कि आपकी "नई पंक्ति" क्या है, लेकिन आप अपने संपादन बटन को एक सहायक विधि में संलग्न कर सकते हैं जो सेट एडिटिंग को कॉल करने से पहले ध्वज सेट करता है, और वहां आप जांच सकते हैं कि कहा गया ध्वज सेट है और तदनुसार व्यवहार करें । फिर विधि के अंत में ध्वज साफ़ करें।

+0

संपादन बटन के व्यवहार को ओवरराइड किए बिना ऐसा करने का कोई तरीका नहीं है? यदि संभव हो तो मैं ऐप्पल की सिफारिश का उपयोग करना चाहता हूं। (मैंने प्रश्न स्पष्ट किया) – Senseful

+0

वैसे भी नई पंक्ति मानक व्यवहार जोड़ रहा है? मैंने सोचा कि ऐसा करने के लिए एक "+" या "जोड़ें" बटन लगातार तरीका होगा। यदि किसी उपयोगकर्ता को नए आइटम जोड़ने के लिए संपादित करने की आवश्यकता है, तो यह बहुत सारे समर्थन मेल के लिए कॉल करता है। :-) – Eiko

+0

ईमेल/फोन – Senseful

0

सावधानीपूर्वक आपको सेट एडिटिंग को ओवरराइड करना होगा: एनिमेटेड: विधि। या यहां तक ​​कि आप इस विधि में ध्वज सेट कर सकते हैं क्योंकि ईको ने सुझाव दिया है।

या अन्य तरीके से

यू कस्टम naviagtion बार लागू है। उस स्थिति में आपको नेविगेशन बार की छवि और इसके ऊपर 2 बटन चाहिए। उस बटन को लक्ष्य जोड़ सकते हैं और अपनी जरूरत

3

उपयोग UITableViewDelegate विधि tableView:willBeginEditingRowAtIndexPath: के रूप में कार्यक्षमता को लागू। प्रलेखन से:

"This method is called when the user swipes horizontally across a row; as a 
consequence, the table view sets its editing property to YES (thereby entering editing 
mode) and displays a Delete button in the row identified by indexPath. In this "swipe to 
delete" mode the table view does not display any insertion, deletion, and reordering 
controls. This method gives the delegate an opportunity to adjust the application's user 
interface to editing mode. When the table exits editing mode (for example, the user taps 
the Delete button), the table view calls tableView:didEndEditingRowAtIndexPath:." 

tableView:willBeginEditingRowAtIndexPath: में, एक ध्वज है कि संपादन मोड कड़ी चोट का उपयोग कर नष्ट करने के लिए ट्रिगर किया गया था की स्थापना की। फिर, setEditing:animated: में, यह देखने के लिए ध्वज की जांच करें कि संपादन मोड सामान्य रूप से ट्रिगर किया गया था या उस चेक के आधार पर कुछ क्रियाओं को हटाने और स्वाइप करने के लिए स्वाइप का उपयोग कर रहा था। अंत में, tableView:didEndEditingRowAtIndexPath: में ध्वज को रीसेट करें ताकि संपादन बटन दबाए जाने पर डिफ़ॉल्ट कार्रवाई की जाएगी।

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