2016-12-14 5 views
5

मेरे पास अपने उद्देश्य सी अनुप्रयोग में UITablaView है। मेरे पास एक लेबल के साथ कस्टम कक्ष हैं और UIImageView है। जब उपयोगकर्ता इस पंक्ति के भाग पर क्लिक करते हैं तो मैं didSelectRowAtIndexPath अक्षम करने के लिए पंक्तियों का एक हिस्सा अक्षम करना चाहता हूं।क्या UITableView में पंक्ति के एक हिस्से में didSelectRowAtIndexPath को अक्षम करना संभव है?

enter image description here

क्या यह संभव है:

मैं इस करना चाहते हैं?

+1

आप छवियों पर एक बटन डाल सकते हैं ताकि यह सेल को कवर कर सके और टैग को सेट भी कर सके, अगर बाद में कुछ कार्यक्षमता करने की आवश्यकता हो। – vaibhav

+0

एक तरीका है: उपयोग करने की कोई ज़रूरत नहीं है विधि का चयन किया। बस उस क्षेत्र पर एक बटन डालें जहां आप चाहते हैं और इसे एक कार्रवाई दें। – Amanpreet

+0

@ user3745888: अगर यह –

उत्तर

1

आप इस समस्या को हल करने के लिए सरल चाल (कोड लिखने की आवश्यकता के बिना) कर सकते हैं, उस बटन को जोड़कर जिसमें आप उस भाग को शामिल कर सकते हैं जिसे आप चयन करना चाहते हैं। जाहिर है, बटन में कोई टेक्स्ट या पृष्ठभूमि रंग नहीं होना चाहिए (यह स्पष्ट रंग होना चाहिए), यह भी सुनिश्चित करने के लिए उपयुक्त बाधाओं को जोड़ना सुनिश्चित करें कि सेल के वांछित भाग को कवर किया गया हो।

तो बटन पर टैप करते समय, कुछ भी नहीं होना चाहिए और didselectRow को कॉल नहीं किया जाना चाहिए क्योंकि वास्तविक स्पर्श घटना को बटन पर संदर्भित किया जाना चाहिए, पंक्ति पर नहीं।

आशा है कि इससे मदद मिलेगी।

6

यहां सरल और सबसे सुरुचिपूर्ण समाधान है जिसे मैं सोच सकता हूं।

मेरा मानना ​​है कि आप एक CustomCell, जो बाईं ओर imageView करने IBOutlet रखती होने किया जाना चाहिए :) आप अपने समस्या :)

में हल करने के लिए hitTest विधि का उपयोग कर सकते अपने CustomCell यह मान होने की सुविधा देता है MyTestCell वर्ग यह लिख,

override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? { 
     if self.myImageView.frame.contains(point) { 
      return nil 
     } 
     return super.hitTest(point, with: event) 
    } 

कहाँ myImageView अपने सेल :)

सभी कर रहा हूँ जाँच कर रहा है, जहां उपयोगकर्ता नल किया बाएं हाथ की ओर imageView की IBOulet है, अगर स्पर्श बिंदु के भीतर है फ्रेम ओ एफ कोशिका छवि देखें क्या आप दृश्य के रूप में शून्य वापस आते हैं। जब आप नील टच इवेंट लौटते हैं तो उसके माता-पिता के विचारों का प्रचार करना बंद हो जाता है और आखिरकार सेल तक कभी नहीं पहुंच जाएगा इसलिए didSelectRowAtIndexPath कभी नहीं कहा जाता है,

दूसरी तरफ आपको अगले दृश्य पर स्पर्श करना चाहिए और आप इसे उसी विधि को कॉल करके बस कर सकते हैं super आईओएस अंत में इसे वापस सेल का पता लगाने और चलाता है didSelectRowAtIndexPath

आशा है कि यह मदद करता है :)

+0

काम करता है तो कृपया उत्तर स्वीकार करने पर विचार करें यह निश्चित रूप से सबसे अच्छा जवाब है। कृपया अपना लक्ष्य – CZ54

+0

@ cz54 प्राप्त करने के लिए कोई अनावश्यक दृश्य न जोड़ें: धन्यवाद !!! –

+0

अच्छा उत्तर प्लस वन, लेकिन यह केवल छवि दृश्य क्षेत्र को प्रभावित करता है। – vaibhav

0

आप बस छवि दृश्य width constraints to 0 बदल सकता हूँ सकता है। जहां आप कार्रवाई करना चाहते हैं। उदाहरण के लिए:

1) यदि आप छवि को कवर करने वाले बटन का उपयोग करते हैं।

2) यदि आप नेविगेशन बार लेते हैं तो आप एक बटन लेते हैं और कार्रवाई करते हैं।

उम्मीद है कि इससे मदद मिलेगी।

0

यह बहुत ही आसान चाल है, प्रोफ़ाइल छवि भाग पर एक बटन जोड़ें, जिसका अर्थ चित्र में दिखाया गया है (आपके द्वारा प्रदान किया गया)। और बटन क्लिक पर क्लिक करने पर मत करो।

हैप्पी कोडिंग !!!!

0

बस बटन को ग्रीन क्षेत्र पर रखें और प्रत्येक बटन के लिए टैग सेट करें। ऑनक्लिक आप टैग का उपयोग कर अपनी कार्यक्षमता कर सकते हैं। जैसा इस

अंदर

func tableView(tableView: UITableView,cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{ 
 

 
let obj: AnyObject = self.dataList.objectAtIndex(indexPath.row); 
 
     cell?.populateCellWithData(obj, indexPath: indexPath) 
 

 
cell?.destinationLabel.userInteractionEnabled = true 
 
     let destRecognizer : UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "DestLabelTapped:") 
 
     destRecognizer.numberOfTapsRequired = 1 
 
     destRecognizer.delegate = self 
 
     cell?.destinationLabel.addGestureRecognizer(destRecognizer) 
 

 
}

और DestLabelTapped में आप अपने functionlity peform कर सकते हैं

एक और तरीका है सिर्फ दो tableview की स्थापना की और उन्हें पक्ष और एक मेज से कंधा मिलाकर स्क्रॉल चयन योग्य है और दूसरा नहीं है। (ऐसा मत करें)

0

मेरी समझ में सामग्री और सामग्री को कवर करने वाले अन्य UIElements के साथ चाल लक्ष्य को हल करने का सही तरीका नहीं है। स्टोरीबोर्ड में आपको उनके साथ अतिरिक्त कुशलता की आवश्यकता होगी, अगर आपको गतिशील रूप से सामग्री बनाने की आवश्यकता होगी, यदि आप बाधाओं और कई और स्थितियों के साथ काम करेंगे जहां आपको अपनी सामग्री और कृत्रिम कवर को नियंत्रित करने की आवश्यकता होगी।

  1. सेट UITableView चयन No Selection को
  2. दूसरे भाग रखो कि तुम UIView में सक्रिय होना चाहते हैं: वहाँ ऐसा करने के लिए कुछ चीजें हैं। यह UIView सामग्री कंटेनर होगा।
  3. UIView करने के लिए

    UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(selectCellAction:)]; 
    
  4. IBAction जोड़ें जहां आप सभी की जरूरत कर सकता है UITapGestureRecognizer जोड़ें।

    - (IBAction)selectCellAction:(id)sender 
    { 
        // do what you need 
    } 
    

और यह सब thats।

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