2014-10-04 10 views
37

मेरे पास एक कस्टम UITableViewRowAction सेट अप और काम कर रहा है। एकमात्र चीज जो मैं काम नहीं कर सकता वह यह है कि एक बार कार्रवाई का चयन करने के बाद UITableViewRowAction को कैसे खारिज कर दिया जाए। मुझे यकीन है कि मैं वास्तव में कुछ याद कर रहा हूँ।UITableViewRowAction को खारिज करें

func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]? { 

    var moreRowAction = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: "In", handler:{action, indexpath in 
     //Some code to execute here 
    }); 
    moreRowAction.backgroundColor = UIColor(red: 0.298, green: 0.851, blue: 0.3922, alpha: 1.0) 

    return [moreRowAction]; 
} 

किसी भी सलाह के लिए धन्यवाद: यहाँ मेरे वर्तमान सेटअप है।

उत्तर

67

आप हैंडलर में कार्रवाई को खारिज करते हैं जिसे क्रिया टैप होने पर बुलाया जाता है। The documentation हैंडलर का वर्णन निम्नानुसार है

जब उपयोगकर्ता इस क्रिया से जुड़े बटन को टैप करता है तो निष्पादित करने के लिए ब्लॉक। UIKit आपके द्वारा प्रदान किए गए ब्लॉक की एक प्रति बनाता है। जब उपयोगकर्ता इस ऑब्जेक्ट द्वारा प्रतिनिधित्व की गई क्रिया का चयन करता है, तो UIKit ऐप के मुख्य थ्रेड पर आपके हैंडलर ब्लॉक को निष्पादित करता है।

स्वतंत्र रूप से, मुझे लगता है कि आप केवल तालिका दृश्य editing संपत्ति को गलत पर सेट कर सकते हैं।

tableView.setEditing(false, animated: true) 
+0

धन्यवाद, मुझे पता था कि यह कुछ इस तरह आसान होगा। – User4

+0

@Mundi कोड में टेबल व्यू में एक पंक्ति की कार्रवाई दिखाने के बारे में क्या? –

+0

ओपी का कोड देखें। – Mundi

6

यह मेरे लिए काम करता है:

tableView.editing = नहीं;

1

कॉलिंग tableView.setEditing(false, animated: true) केवल कुछ समय काम करता प्रतीत होता है। आखिरकार तालिका दृश्य एक ऐसे राज्य में आता है जहां यह अब संपादन कार्यों को प्रदर्शित नहीं करता है।

मुझे पता चला है कि बस tableView.reloadRows(at: [indexPath], with: .none) पर कॉल करना अधिक विश्वसनीय रूप से काम करता है।

+0

ध्यान दें कि यदि सेल में पुन: उपयोग पहचानकर्ता नहीं है तो यह काम नहीं करता है। ऐसा इसलिए हो सकता है क्योंकि 'UITableView' को दो राज्यों को एक राज्य से दूसरी स्थिति में संक्रमण करने की आवश्यकता होती है (भले ही एनीमेशन '.none' पर सेट हो)। –

1

स्विफ्ट 3 में मील के लिए काम करता है:

self.tableView.setEditing(false, animated: true) 
संबंधित मुद्दे