ऊपर दिए गए उत्तरों के मुताबिक, आपको पंक्ति को स्पष्ट रूप से अचयनित करने की आवश्यकता है। आपके पास यह विकल्प है कि आप यह कैसे करते हैं। पहले, चयन के बाद तुरंत पंक्ति का चयन रद्द करने के लिए है:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
...
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
कि ठीक से काम करेंगे, लेकिन वहाँ एक विकल्प है, और उसके दृष्टिकोण UITableViewController
द्वारा उठाए गए पंक्ति चयनित ही रहने देना है जो तब यह जब का चयन रद्द पुनः प्रकट होता है (जिस नियंत्रक को आप दबा रहे हैं उसके बाद स्टैक से पॉप किया गया है)।
इसका थोड़ा सा फायदा यह है कि उपयोगकर्ता वापस लौटने पर उनके पिछले चयन की झलक देखता है ताकि वे देख सकें कि उन्होंने पहले क्या चुना था।
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self.tableView deselectRowAtIndexPath:[self.tableView indexPathForSelectedRow] animated:YES];
}
जैसा कि मैंने कहा, यह क्या UITableViewController
के viewWillAppear:
के कार्यान्वयन के डिफ़ॉल्ट ऐसा नहीं करता है अगर आप UITableViewController
और उपयोग कर रहे हैं नहीं देख:
यह लागू करने के लिए, तुम सिर्फ viewWillAppear
ओवरराइड करने के लिए की जरूरत है यह व्यवहार, आपको यह जांचना चाहिए कि आप अपनी कक्षा के viewDidAppear:
में super
कार्यान्वयन को कॉल कर रहे हैं।
अपडेट (30 अक्टूबर 2013): अच्छा, यह एक लोकप्रिय जवाब है! चूंकि बेन टिप्पणियों में सही मायने में बताते हैं, UITableViewController वास्तव में viewWillAppear:
viewDidAppear:
में नहीं करता है - यह सही समय है। इसके अतिरिक्त, आप UITableViewController की clearsSelectionOnViewWillAppear
प्रॉपर्टी का उपयोग करके इस व्यवहार को चालू और बंद कर देते हैं। मैंने इसे प्रतिबिंबित करने के लिए ऊपर दिए गए मेरे उत्तर में संशोधन किया है।
स्रोत
2010-05-10 20:05:17
सच अच्छा। इसके लिए धन्यवाद। – ToddB
@ ल्यूक रेडपाथ कमाल ... धन्यवाद – death7eater
यह एक अच्छा जवाब है, लेकिन मैं सुझाव दूंगा कि इसे 'viewWillAppear' में रखा जाना चाहिए ताकि UITableViewController deselection के समय की सटीक नकल हो सके। –