2012-12-04 31 views
5

मैं एक UICollectionViewController करने के लिए एक searchbar जोड़ना चाहते हैं करने के लिए, निम्न तरह से एम्बेड किया UITabBarController> UINavigationbarController> UICollectionViewController> SearchBar इस दृश्य में, खोज पट्टी की जगह लेंगे नेविगेशन बार।UISearchBar जोड़ने navigationController IOS6 में एम्बेड UICollectionviewController

एक ही डिजाइन के तहत, अगर मैं एक UITableViewController के साथ ऊपर का परीक्षण, searchbar ऊपर ठीक से पता चलता है (दोनों प्रोग्राम के रूप में और स्टोरीबोर्ड के माध्यम से)

समस्या मैं UICollectionViewController से अधिक खोज पट्टी को जोड़ने के लिए नहीं मिल सकता है जब मैं स्टोरीबार्ड ढांचे का उपयोग करता हूं; यह सिर्फ दृश्य के बीच में बैठता है, और मैं इस बारे में अनजान हूं कि इसे शीर्ष पर कैसे स्थानांतरित किया जाए। इसके अलावा, यह हमेशा UICollectionview के नीचे दिखाई देता है, इसलिए यह दिखाई नहीं दे रहा है।

तो, अन्य मार्ग, प्रोग्राम के रूप में ले रही है:

-(void)viewWillAppear:(BOOL)animated{ 
self.searchBarTop = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)]; 
[self.searchBarTop setPlaceholder:@"Enter your command here"]; 
self.searchDC = [[UISearchDisplayController alloc]initWithSearchBar:self.searchBarTop contentsController:self]; 
self.searchBarTop.delegate = self; 

[[self navigationController] setNavigationBarHidden:NO animated:animated]; 
[self.navigationController.navigationBar addSubview:self.searchBarTop]; 
} 
इस के साथ

, खोज पट्टी ऊपर ठीक से पता चलता। लेकिन दुर्भाग्यवश, जब मैं कुछ पाठ टाइप करता हूं, तो यह दृश्य के ऊपर गायब हो जाता है - संभवतः क्योंकि अंतर्निहित navBar ऐसा करता है - (पता नहीं क्यों ...)

मुझे यकीन नहीं है कि खोजबार ठीक क्यों है एक UITableViewController, और यह UICollectionViewController के लिए इतना दर्द क्यों है। उसने कहा, किसी के पास कोई सुराग है कि क्यों खोजबार/navBar गायब हो जाता है, और मैं इसे कैसे ठीक कर सकता हूं?

कोई समाधान स्वागत है ..

धन्यवाद! -एक

उत्तर

8

कोई ऐसा शीर्ष लेख और उस में SearchBar डाल (है कि मैं अतीत में क्या किया है) है। ऐसा कहा जा रहा है कि, मुझे शायद कभी भी UITableViewController का उपयोग करने की आदत में नहीं मिला है (जब तक कि मैं StaticCellTableView लागू नहीं कर रहा हूं) या UICollectionViewController। मैं सुझाव दूंगा कि एक मानक UIViewController लागू करें और बस अपने UICollectionView में जोड़ें। कुछ नीचे CollectionView आकार दें और शीर्ष पर SearchBar डालें। यह आपको SearchBar रखने की अनुमति देता है जो हमेशा प्रदर्शित होता है (जो मेरे उपयोगकर्ता आमतौर पर बदलने के लिए शीर्ष पर स्क्रॉल करने से बेहतर पसंद करते हैं, एक खोज संपादित करते हैं)

+1

धन्यवाद! यह एक समाधान हो सकता है जिसे मुझे विचार करना होगा, मैं सहमत हूं, क्योंकि ऐसा लगता है कि UICollectionviewController दृश्य का 100% उपयोग करता है। मैं मांग पर छुपा/दृश्य खोज बार चाहता हूं, इसलिए NavBar ने एक आसान तरीका प्रदान किया। UIViewController के साथ ऐसा करने के दौरान, uicollectionview को ठीक से आकार बदलने की इजाजत देने के दौरान कुछ पुनर्विक्रय की आवश्यकता होगी। अगर मैं कर सकता हूं तो मैं इससे बचूंगा। अभी के लिए। – Alex

+0

क्या आपने हेडर व्यू में सर्चबार जोड़ने की कोशिश की है? –

+0

हेडर नंबर में, क्योंकि यह विकल्प वह नहीं है जिसे मैं ढूंढ रहा हूं (खोज बार दृश्य के साथ स्क्रॉल करेगा)। मैं अन्य कोशिश कर सकता हूं - UIViewController - हालांकि मुझे लगता है कि मुझे UICollectionViewController/UICollectionView जोड़ी के अनुरूप होना चाहिए। – Alex

8

मैं UICearchlection को UICollectionViewController में जोड़ने के लिए निम्न कोड का उपयोग करता हूं। दुर्भाग्य से मैं UISearchDisplayController काम नहीं कर सका।

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.collectionView.frame), 44)]; 
    self.searchBar.autocorrectionType = UITextAutocorrectionTypeNo; 
    self.searchBar.delegate = self; 
    [self.collectionView addSubview:self.searchBar]; 
    [self.collectionView setContentOffset:CGPointMake(0, 44)]; 
} 

- (void) viewWillAppear:(BOOL)animated{ 
    // to show search bar 
    [self.collectionView setContentOffset:CGPointMake(0, 0)]; 
    // to hide search bar 
    [self.collectionView setContentOffset:CGPointMake(0, 44)]; 
} 

-(void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar { 
    [searchBar setShowsCancelButton:YES animated:YES]; 
} 

-(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar { 
    [searchBar setText:@""]; 
    [searchBar setShowsCancelButton:NO animated:YES]; 
    [searchBar resignFirstResponder]; 
} 
+0

हाय यूजीन, धन्यवाद! असल में, यह बहुत ज्यादा जय का समाधान है, जो बिल्कुल मुझे जरूरी नहीं था। अंतरिम में, मुझे यह एक मिला: http://stackoverflow.com/questions/10617330/uisearchbar-in-uinavigationbar-changes-width-when-rotating-orientation?rq=1, जो मेरी आवश्यकताओं के लिए ठीक काम करता है। खुश होती है। – Alex

+0

इस दृष्टिकोण के अतिरिक्त, आप लेआउट के हेडर रेफरेंस साइज को CGSizeMake (320.0,44.0) के रूप में सेट कर सकते हैं ताकि सामग्री 44.0 –

+0

के बाद शुरू हो जाएगी अच्छा जवाब – Shashi3456643