2012-05-31 16 views
6

साथ prepareForSegue साथ indexPath.row गुजर मैं इस पूरे कोर डाटा, स्टोरीबोर्ड, UISearchBar एकदम सही ढंग से एक साथ काम करने तिकड़ी हो रही एक समय की एक डिकेंस आ रही है। आखिरकार कोर डेटा के साथ टेबल को सफलतापूर्वक बनाया गया, आइटम को एक खोज टेक्स्ट से संकीर्ण कर दिया गया, और संशोधित तैयारफॉरसेग्यू, अभी भी एक हिचकी है ...मुसीबत UISearchBar

जब मैं विस्तार से देखने के लिए तालिका में किसी भी आइटम पर क्लिक करता हूं, सभी unfiltered तालिका में ठीक है। PrepareForSegue कहा जाता है और विस्तार पूरी तरह से प्रकट होता है।

जब मैं खोज करता हूं, मेरी तालिका फ़िल्टर की जाती है (मैं अब दूसरे NSFetchedResultsController के बजाय फ़िल्टर किए गए सरणी विकल्प पर जा रहा हूं, लेकिन कोशिश करने की कमी के लिए नहीं!)।

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

उदाहरण के लिए, यदि मैंने "सी" की खोज की है और सूची "चार्ली" और "कुकी" को संकुचित कर दी गई है, जब मैं "चार्ली" चुनता हूं तो मुझे "चार्ली" के लिए विस्तृत दृश्य दिखाई देता है। जब मैं "कुकी" चुनता हूं, तो दुर्भाग्यवश, "चार्ली"

के लिए विस्तार दृश्य भी देखें, मैं यह मान रहा हूं कि readyForSegue कोड समस्या है (शायद गलत है?)। यहां कोड है:

SampleTVC *sampleDetailTVC = segue.destinationViewController; 
    sampleDetailTVC.delegate = self; 

    // Store selected Role in selectedRole property 
    NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; 
    // self.selectedRole = [self.fetchedResultsController objectAtIndexPath:indexPath]; 
    if (savedSearchTerm){ 
     self.selectedRole = [self.searchResults objectAtIndex:indexPath.row]; 
    } else { 
     self.selectedRole = [self.fetchedResultsController objectAtIndexPath:indexPath]; 
    } 
    NSLog(@"Passing selected role (%@) to SampleTVC", self.selectedRole.name); 
    sampleDetailTVC.role = self.selectedRole; 

किसी भी मदद की सराहना की जाएगी!

+0

जब आप "कुकी" का चयन करें, आप लॉग इन कर सकते

बस को जोड़ने के लिए किया था उस बिंदु पर 'self.searchResults' और 'indexPath.row' के मान जहां आपको भूमिका मिलती है? –

+0

जब मैं जोड़ें: अगर (savedSearchTerm) { self.selectedRole = [self.searchResults objectAtIndex: indexPath.row]; एनएसएलओजी (@ "खोज क्या हैं:% @ इंडेक्सपाथ क्या है:% @", self.searchResults, indexPath.row); -------------------- मुझे निम्नलिखित मिलते हैं: खोज क्या हैं: चार्ली, कुकी [संक्षिप्त करने के लिए संपादित] इंडेक्सपाथ क्या है: (शून्य) ----- I मैं सोच रहा हूं कि index.path (शून्य) मुद्दा हो सकता है? –

+0

और गैर खोजा मेज पर, अगर मैं indexPath लॉग ऑन मैं: क्या indexpath है: 2 अनुक्रमित [0, 3] –

उत्तर

12

फिलिप मिल्स के लिए धन्यवाद, उत्तर के लिए:

indexPath = [self.searchDisplayController.searchResultsTableView indexPathForSelectedRow]; 

पूर्ण नमूना:

SampleTVC *sampleDetailTVC = segue.destinationViewController; 
    sampleDetailTVC.delegate = self; 
    // Store selected Role in selectedRole property 
    NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; 
    // self.selectedRole = [self.fetchedResultsController objectAtIndexPath:indexPath]; 
    if (savedSearchTerm){ 
     indexPath = [self.searchDisplayController.searchResultsTableView indexPathForSelectedRow]; 
    self.selectedRole = [self.searchResults objectAtIndex:indexPath.row]; 
    } else { 
     self.selectedRole = [self.fetchedResultsController objectAtIndexPath:indexPath]; 
    } 
    NSLog(@"Passing selected role (%@) to SampleTVC", self.selectedRole.name); 
    sampleDetailTVC.role = self.selectedRole; 
+0

भूलें कि आप अपना उत्तर स्वीकार कर सकते हैं। –

+0

धन्यवाद !, यह मुझे 17 घंटे के लिए नहीं जाने देगा ... :) –