5

मेरे पास एक UITableViewController है जो UINavigationController में एम्बेडेड है और मैं Peek & पॉपव्यू में पॉप को लागू करने की कोशिश कर रहा हूं। मेरे पास "peek" भाग पूरी तरह से काम कर रहा है, लेकिन जब मैं अगले व्यू कंट्रोलर में "पॉप" करने का प्रयास करता हूं, तो सेल मैं "peeking" था और अगला सेल दोनों दिखाए गए हैं। मैं एक UICollectionView में "पॉपिंग" कर रहा हूं, और जैसा कि मैंने उल्लेख किया है, "peek" आधा सही सेल दिखाता है, लेकिन "पॉप" नहीं करता है। यह समस्या तब होती है जब मैं "पॉप" निष्पादित करने के लिए [self.navigationController showViewController:viewControllerToCommit sender:nil]; या [self.navigationController pushViewController:viewControllerToCommit animated:YES]; का उपयोग करता हूं।पीक और पॉप - यूआईसीओलेक्शन व्यू में गलत सेल की ओर अग्रसर पॉप

यहाँ "पीक" है सही सेल Peek showing correct cell

और "पॉप" गलत सेल (रों) दिखा दिखा
Pop showing wrong cell

मैं [self presentViewController:viewControllerToCommit animated:YES completion:nil]; का उपयोग करने की कोशिश की और सही सेल दिखाया गया है , इसके अलावा मुझे मुझे नौसैनिक तत्वों की आवश्यकता नहीं है, इसलिए मैं इसका उपयोग नहीं कर सकता (जब तक कि सभी नेविगेशन तत्वों को वापस पाने का कोई तरीका न हो)।

मेरा प्रारंभिक विचार यह है कि मेरे ऐप संग्रहव्यूसेल के आकार को कैसे समझ रहा है, इसमें कुछ गड़बड़ है। यहां वह कोड है जिसका मैं उपयोग कर रहा हूं, हालांकि ऐसा लगता है कि यह Peek & पॉप के अलावा अन्य सभी चीज़ों के साथ ठीक से काम करता है।

-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { 
    CGSize collectionViewBounds = collectionView.bounds.size; 

    int navigationHeight = self.navigationController.navigationBar.bounds.size.height; 
    int toolbarHeight = self.navigationController.toolbar.bounds.size.height; 
    int statusBarHeight = [UIApplication sharedApplication].statusBarFrame.size.height; 

    int cellHeight = collectionViewBounds.height - (navigationHeight + statusBarHeight + toolbarHeight); 
    int cellWidth = collectionViewBounds.width; 

    return CGSizeMake(cellWidth, cellHeight); 
} 

मेरे भ्रम को जोड़ने के लिए, "पॉप" पूरी तरह से काम करता है जब tableview में पहली या अंतिम आइटम "peeked" कर रहे हैं। इसके लिए कोई भी सहायता अति सराहनीय होगी।

+0

आप सभी नौवहन तत्वों back_ –

+0

मैं एक नया 'UINavigationController' और अपने डेटा बनाने की कोशिश की नए दृश्य में लोड नहीं किया गया था एक' UINavigationController' और * 'navigationController' कि _GET के लिए * वर्तमान करने के लिए अपने' viewControllerToCommit' जोड़ सकते हैं 'सेल, और दिखाई देने वाला एकमात्र नेविगेशन तत्व एक ब्लैंक' यूनाविगेशनबार 'था और खाली' यूटूलबार ' – Nick

उत्तर

2

तो आखिरकार मुझे पता चला कि इस समस्या का कारण क्या था। मेरा ऐप एक सार्वभौमिक ऐप है, और मैं आईपैड पर पॉपओवर सेगु का उपयोग करता हूं। मेरे व्यू कंट्रोलर के viewWillAppear में जो "पॉपिंग" गलत तरीके से है, मैं आईपैड पर पॉपओवर के आकार को निर्धारित करने के लिए [self setPreferredContentSize:CGSizeMake(400.0, 600.0)] का उपयोग करता हूं। एक बार जब मैंने उस रेखा को हटा दिया, तो मेरे Peek & पॉप पूरी तरह से काम किया।

मैंने अपने व्यू कंट्रोलर @property BOOL fromPeek में एक नई संपत्ति जोड़ना समाप्त कर दिया और उस प्रॉपर्टी को YES पर - (UIViewController *)previewingContext:(id <UIViewControllerPreviewing>)previewingContext viewControllerForLocation:(CGPoint)location में अपने पूर्वावलोकन व्यू कंट्रोलर में सेट किया। अंत में, मैंने viewWillAppear को if(!fromPeek) [self setPreferredContentSize:CGSizeMake(400.0, 600.0)]; होने के लिए संशोधित किया और समस्या अब हल हो गई है!

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