उपरोक्त उत्तरों में से कोई भी वास्तव में समस्या को सही तरीके से संबोधित नहीं करता है। कारण यह है कि हम सेल के चयन को अक्षम करना चाहते हैं, लेकिन आवश्यक नहीं कि सेल के अंदर ही साक्षात्कार हों।
मेरे मामले में मैं पंक्ति के बीच में एक UISwitch प्रस्तुत कर रहा था और मैं बाकी पंक्ति के लिए चयन को अक्षम करना चाहता था (जो खाली है) लेकिन स्विच के लिए नहीं! ऐसा करने का उचित तरीका विधि में है
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
जहां फार्म का एक बयान
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
एक ही समय में विशिष्ट सेल के लिए चयन को अक्षम करता है, जबकि उपयोगकर्ता स्विच को हेरफेर करने की अनुमति देता है और इसलिए उपयुक्त चयनकर्ता का उपयोग करता है। यह सच नहीं है अगर कोई उपयोगकर्ता के माध्यम से बातचीत को निष्क्रिय करता है
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
विधि जो केवल कोशिका को तैयार करती है और यूआईस्विच के साथ बातचीत की अनुमति नहीं देती है।
इसके अलावा, विधि का उपयोग कर
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
फार्म के एक बयान के साथ सेल को रद्द करने के लिए
[tableView deselectRowAtIndexPath:indexPath animated:NO];
अभी भी पंक्ति को चुना जा रहा है, जबकि उपयोगकर्ता सेल के मूल contentView पर दबाता है।
केवल मेरे दो सेंट्स। मुझे पूरा यकीन है कि कई लोग इसे उपयोगी पाएंगे।