2010-05-05 8 views
16

मैं आईफोन विकास के लिए नया हूं। मैंने अपनी सामग्री को प्रदर्शित करने वाली एक टेबल बनाई है। अगर मैं एक पंक्ति का चयन करता हूं, तो यह राज्य नीले रंग में हाइलाइट किया जाता है और दूसरे दृश्य में नेविगेट करता है और यदि मैं बैक बटन पर क्लिक करता हूं तो यह तालिका में वापस जाता है नीले रंग के रंग में क्लिक किया गया सेल, मैं अपने दृश्य पर वापस जाकर टेबल पर हाइलाइट किए गए रंग को हटाना चाहता हूं। मैं यह कैसे कर सकता हूं। धन्यवाद।आईफोन में तालिका दृश्य को एक बार फिर दिखाते समय सेल चयन शैली रंग को कैसे हटाया जाए?

उत्तर

14

अंततः मुझे इसे मेरी तालिका दृश्य कक्षा में लागू करके प्राप्त हुआ।

- (void)viewWillAppear:(BOOL)animated 
{ 
    NSIndexPath *tableSelection = [self.tableView indexPathForSelectedRow]; 
    [self.tableView deselectRowAtIndexPath:tableSelection animated:NO]; 
} 
0

viewDidAppear: का डिफ़ॉल्ट कार्यान्वयन आपके लिए इसका ख्याल रखना चाहिए। यदि आपने अपनी तालिका दृश्य नियंत्रक में उस विधि को ओवरराइड किया है, तो अपने ओवरराइड विधि में [super viewDidAppear:animated] पर कॉल करना न भूलें।

48

मुझे लगता है कि ऐसा करने के लिए आम तौर पर स्वीकार तरह से सेल का चयन रद्द करने के रूप में आप नए दृश्य को नेविगेट कर रहे है। ViewWillAppear के बजाय, tableview प्रतिनिधि विधि का उपयोग करें SeelectRowAtIndexPath और उसी deselectRowAtIndexPath का उपयोग कर रहे थे।

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)newIndexPath{ 
    [tableView deselectRowAtIndexPath:newIndexPath animated:YES]; 
} 

(और आम तौर पर स्वीकार द्वारा, मेरा मतलब है "सामान मैं सबसे अधिक बार उदाहरण के कोड में देख"। यह आप इसे अंत में की तरह लग रहे करने के लिए क्या चाहते हैं पर निर्भर करता है)

+0

यह स्वीकार किए जाते हैं जवाब :) – Philip007

+1

सेल इस तरह का कारण बनता है एनीमेशन योद्धा के नए दृश्य भार रूप में नहीं बल्कि दृश्य पुन: दिखाई देता है, जो @ है क्या के रूप में की तुलना में होने के लिये चयन रद्द करने से होना चाहिए जवाब करता है आप जो चाहते हैं उस पर निर्भर करता है, मुझे लगता है। – ele

+0

सहमत हैं, यह सबसे अच्छा समाधान है। – acoustic

14

आप गलत कर रहे हैं, cellForRowAtIndexPath विधि पर। अपने UITableViewCells

पर इस

[cell setSelectionStyle:UITableViewCellSelectionStyleNone]; 

का उपयोग यह सही तरीका है, तो आप न तो देखने के लिए वापस आ रहा पर सेल पर प्रकाश डाला करने के लिए नहीं है और न ही चयन छूने पर चाहता था होगा। यदि आप केवल अन्य समाधान देखने के लिए वापस आने पर सेल को अचयनित करना चाहते हैं तो अधिक उपयुक्त हैं।

+0

Xamarin के लिए: सेल। चयन स्टाइल = UITableViewCellSelectionStyle.None; स्विफ्ट 3: cell.selectionStyle = .none; – Array

0

स्विफ्ट 3 के लिए:

override func viewWillDisappear(_ animated: Bool) { 
     if let indexPath = self.tableview.indexPathForSelectedRow { 
      tableview.deselectRow(at: indexPath, animated: true) 
     } 
    } 
संबंधित मुद्दे