2011-01-06 18 views
15

में अनेक पंक्तियों का चयन करें मैं एक UITableView में अनेक पंक्तियों की तरह एप्पल देशी अलार्म अनुप्रयोग में है (चित्र देखें चयन करना चाहते हैं alt textUITableView

मुझे लगता है कि?

सभी उत्तरों मैंने देखा कि कैसे कर सकते अब तक पुराना था (और कहा "नहीं कर सकता") या मूल मेल ऐप में एकाधिक पंक्ति चयन का संदर्भ लें। यह विधि वह नहीं है जो मैं चाहूंगा क्योंकि आपको पहले "संपादन" -मोड में प्रवेश करना होगा। अभी पंक्तियों का चयन करने में सक्षम होना चाहता हूँ।

आशा किसी की मदद कर सकते हैं।

+०१२३५१६४१०

ईसाई

उत्तर

24

पर

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

में

कर

if([tableView cellForRowAtIndexPath:indexPath].accessoryType == UITableViewCellAccessoryCheckmark){ 
     [tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryNone; 
    }else{ 
     [tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryCheckmark; 
    } 

संपादित करें:

तुम भी एक सरणी नक्शे कि जाँच की कोशिकाओं का उपयोग करना और cellForRowAtIndexPath में आप अगर accessoryType या जाँच की जानी चाहिए नहीं सत्यापित करने के लिए किया है।

+6

आपको तालिका कक्षों में स्वयं चेक की गई स्थिति को कभी भी स्टोर नहीं करना चाहिए - तालिका स्क्रॉल करते समय उन्हें कई पंक्तियों के लिए पुन: उपयोग किया जा सकता है और आपको किसी भी तरह से चेक किए गए राज्य को पुनर्स्थापित करने की आवश्यकता होगी ... – Vladimir

+0

मेरे पास एक सरणी भी है जो चेक किए गए सेल और इंडेक्स पथ पर पंक्ति के लिए सेल में मैप करती है, मैं सत्यापित करता हूं कि एक्सेसरी टाइप टाइप किया जाना चाहिए या नहीं –

8

क्लॉक एप्लिकेशन में "चयनित" पंक्तियां UITableViewCellAccessoryCheckmark सहायक प्रकार वाले कक्ष हैं। प्राप्त करने के लिए कर रहे हैं कि

संभव कदम:

  1. स्टोर/प्रत्येक पंक्ति के लिए कहीं न कहीं राज्य की जाँच नहीं की जाँच की।
  2. cellForRowAtIndexPath:UITableViewCellAccessoryNone
  3. को चेक नहीं किया गया पंक्ति सेट सेल की accessoryType संपत्ति में सेल के लिए UITableViewCellAccessoryCheckmark
  4. की जाँच की पंक्ति सेट सेल की accessoryType संपत्ति में सेल के लिए विधि cellForRowAtIndexPath: में जब सेल चुना (टैप) इसका चयन रद्द, इसकी जाँच की उलटने स्थिति और पुनः लोड सेल कि सूचकांक पथ
30

सबसे आसान तरीका मैं मिल गया है:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    [tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryCheckmark; 
} 

- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath { 
    [tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryNone; 
} 

आप देख सकते हैं जो कोशिकाओं का चयन किया जाता फोन करके:

NSArray *selectedCells = [self.tableView indexPathsForSelectedRows]; 
+0

आपका उत्तर अद्भुत है .. +1 लेकिन मुझे थोड़ी सी समस्या थी .. मूल्य कैसे प्राप्त करें एनएसएआरएआरई से। अगर आप कृपया अपना उत्तर संपादित कर सकते हैं धन्यवाद – GoCrazy

+1

मुझे आपका समाधान पसंद है, लेकिन ऐसा लगता है कि अगर मैं एक सेल का चयन करता हूं, तो लगभग स्क्रीन की ऊंचाई के अंतर के साथ कई सेल्स का चयन किया जाता है। मैं अब प्रत्येक सेल के लिए चेक की गई स्थिति को संग्रहीत करने के लिए एक सरणी का उपयोग करूंगा। –

11

साथ खेलने

tableView.allowsMultipleSelection

यह मैं घंटे बचाया मुसीबत का here मिला।

+6

क्या यह 'एकाधिक एकाधिक चयन' की अनुमति नहीं है? –

+1

हां, यह अनुमति देता है बहुउद्देश्यीय चयन, अनुमति नहीं देता एकाधिक बहुआयामी स्वीकृत –

0

यदि आप स्टोरीबोर्ड का उपयोग कर रहे हैं, तो तालिका दृश्य पर क्लिक करें और फिर दाईं ओर पैनल पर विशेषता निरीक्षक पर क्लिक करें, "चयन" संपत्ति को "एकाधिक चयन" पर सेट करें। मैंने एक्सकोड संस्करण 8.2.1 का उपयोग करके इसे सत्यापित कर लिया है।