2011-07-09 18 views
7

मेरे पास UITableViewController है, जिसमें मैंने इंटरफ़ेस बिल्डर का उपयोग करके tableHeaderView के रूप में UISearchBar जोड़ा। फिर मैंने निब में UISearchDisplayController जोड़ा, और सभी कनेक्शन (delegate, searchResultsDelegate, searchContentsController, searchResultsDataSource सेट अप किया, सभी UITableViewController से जुड़े हुए)। फिर मैंने अपने कोड में सभी प्रतिनिधि और डेटा स्रोत विधियों को लागू किया।UISearchDisplayController UITableViewController

यह एक अजीब बग को छोड़कर एक आकर्षण की तरह काम करता है: कभी-कभी खोज परिणाम तालिका दृश्य स्क्रॉल नहीं होगा, और मैं इसके पीछे मुख्य तालिका दृश्य का फ्लैश सूचक देख सकता हूं। मैंने searchResultsTableView NSLog'd और स्पष्ट रूप से यह मुख्य तालिकादृश्य का एक सबव्यूव है, और मुझे लगता है कि मैंने पहले बताई गई स्पर्श समस्याओं के पीछे कारण है।

मेरी गलती क्या है? UISearchDisplayController के साथ UITableViewController का उपयोग करना संभव है? यदि हां, तो मैं इसे इस तरह से कैसे स्थापित करूं कि परिणाम तालिका दृश्य को मेरे मुख्य तालिका दृश्य के सबव्यूव के रूप में जोड़ा नहीं जा सकता है?

अद्यतन: मैं this sample जो UITableViewController साथ UISearchDisplayController का उपयोग करता है और जाहिरा तौर पर खोज तालिका दृश्य के साथ-साथ मुख्य तालिका दृश्य में जुड़ जाती वहाँ में पाया। तो अब मुझे नहीं लगता कि यह मेरी समस्या है।

बात यह है कि मैं जो कर रहा हूं और वह नमूना क्या कर रहा है, उसके बीच कोई महत्वपूर्ण अंतर नहीं मिल रहा है। मैं को में UITableView शीर्षलेख के रूप में जोड़ रहा हूं और इसमें UISearchDisplayController जोड़ रहा हूं ... ऐसा लगता है कि जब मैं स्क्रॉल करने का प्रयास करता हूं तो आईओएस मुख्य तालिका और खोज तालिका के बीच उलझन में है। आपके पास कोई विचार है?

अद्यतन: 200 प्रतिनिधि उपहार जोड़ा गया। कृपया उत्तर दें अगर आप जानते हैं कि आप किस बारे में बात कर रहे हैं।

+0

ऐसा लगता है कि आपके पास खोज कार्यक्षमता में एक बग है और यह लूप है। –

+0

@ user792677 क्षमा करें, मुझे आपकी टिप्पणी समझ में नहीं आती है, क्या आप समझा सकते हैं? – pt2ph8

+0

क्या आपने खोज बार और 'UISearchDisplayController' को अलग से जोड़ा है या' UISearchDisplayController' को सीधे तालिका शीर्षलेख दृश्य में खींच रहा है जो सभी आवश्यक कनेक्शन स्वयं ही बनाते हैं। मुझे नहीं पता कि इससे कोई फर्क पड़ता है लेकिन हम कभी नहीं जानते। – florian

उत्तर

9

यह एक अतिरिक्त self.tableView.scrollEnabled = YES था जिसे खोज डेटा अनुरोध समाप्त होने के तुरंत बाद बुलाया गया था। उम्मीद है कि यह भविष्य में किसी भी समस्या के साथ किसी को भी मदद करता है।

+1

डाउनवॉटर को: कृपया समझाएं? यह बकवास है। किसी ने यहां सभी उत्तरों को मजाक कर मजाक कर रहा है। – pt2ph8

+2

डाउनवॉटर स्क्रू करें ... आपने पहल की और समाधान मिला! बहुत सारे लोग काम में डाले बिना छोड़ देते हैं। –

+1

इस जवाब पर कोई अनियमित वोट नहीं है, न ही स्पैम झंडे हैं। दोस्तों, आपके अपने प्रश्न का उत्तर देने में कुछ भी गलत नहीं है। –

3

एक खोज डिस्प्ले नियंत्रक एक खोज बार और एक तालिका दृश्य का प्रदर्शन प्रबंधित करता है जो किसी अन्य दृश्य नियंत्रक द्वारा प्रबंधित डेटा की खोज के परिणाम प्रदर्शित करता है।

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

जब आप UISerarchBar का उपयोग करते हैं तो उसे कम से कम एक UITableView होना चाहिए, जो दृश्य में परिणाम दिखा सकता है। और यहां आप देखने के लिए SearchDisplayController को जोड़ने के बिना परिणाम देख सकते हैं।

+0

क्यों नहीं? वह ऐप्पल नमूना मैंने लिंक किया है और यह काम करता है। – pt2ph8

+0

ठीक है अब मैं अपना जवाब संपादित कर सकता हूं क्योंकि यह किया जा सकता है। मुझे उस बिंदु को गलत समझा गया था। तो, आप वास्तव में यहां क्या जानना चाहते हैं? – AppAspect

+0

क्या आपने मेरा प्रश्न पढ़ा? – pt2ph8

0

खोज बार नियंत्रक अपने स्वयं के तालिका दृश्य का उपयोग करता है जो आपके स्वयं के शीर्ष पर जोड़ा जाता है। यदि आप UISearchDisplayController के प्रतिनिधि और डेटा स्रोत को अपने UITableViewController पर सेट करते हैं, तो तालिका दृश्य नियंत्रक को अपने प्रतिनिधि विधियों में दो तालिका दृश्यों के बीच अंतर बनाना होता है। यदि आप इसे ठीक से नहीं करते हैं, तो यह आपकी बग का कारण बन सकता है।

दूसरे शब्दों में:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    if (tableView == self.tableView) { 
     return number of rows in data model; 
    } else { 
     perform the search query; 
     return number of rows in search query; 
    } 
} 

आप प्रतिनिधि और डेटा स्रोत के तरीकों के सभी के लिए कुछ इसी तरह से करते हैं।

मुझे 100% यकीन नहीं है कि यह आपकी समस्या का कारण बन रहा है, लेकिन अधिक स्रोत को देखे बिना यह कहना मुश्किल है।

+0

धन्यवाद लेकिन यह मेरी समस्या नहीं है। मैं पहले से ही उस भेद कर रहा हूं, लेकिन यह असंबंधित है। समस्या यह है कि जब मैं खोज परिणाम तालिका को स्क्रॉल करने का प्रयास करता हूं, कभी-कभी यह स्क्रॉल नहीं करता है और मैं मुख्य तालिका के फ़्लैश संकेतक देख सकता हूं (जिसका अर्थ है कि मुख्य तालिका दृश्य को खोज तालिका के बजाय स्पर्श प्राप्त हुए हैं)। इसके अतिरिक्त, पहले मैंने एक नई गड़बड़ी भी देखी: मेरे पास मुख्य तालिका के शीर्षलेख में एक दृश्य है, और कभी-कभी जब मैं खोज तालिका को स्क्रॉल करता हूं, तो मुख्य तालिका में यह हेडर दृश्य जादुई रूप से प्रकट होता है और खोज तालिका को ओवरलैप करता है। अजीब। – pt2ph8

+1

ऐसी बग फिक्स करने का सामान्य तरीका एक न्यूनतम ऐप बनाना और यह देखने के लिए है कि यह इस व्यवहार को पुन: उत्पन्न करता है या नहीं। इसके परिणामस्वरूप एक बग रिपोर्ट होगी जिसके परिणामस्वरूप आप ऐप्पल भेज सकते हैं, या (गलत संभावना) गलत जानकारी में अंतर्दृष्टि प्राप्त कर सकते हैं। – Hollance

1

मुझे लगता है कि आप अपनी कक्षा में UISearchDisplayController IBOutlet जोड़ने की कोशिश कर सकते हैं और nib फ़ाइल में अपने SearchDDisplayController से कनेक्ट कर सकते हैं। मैं मनोरंजक हूं कि आपके निब में खोजडिस्प्ले नियंत्रक स्वयं को इंस्पेक्टर में डिफ़ॉल्ट serachdisaplaycontreoller आउटलेट से स्वयं कनेक्ट कर देता है।

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