6

से UIPopoverController प्रस्तुत करना मैं UICollectionViewCell पर एक बटन से UIPopoverController प्रस्तुत करना चाहता हूं।UICollectionViewCell

अभी तक, सबकुछ ठीक से बनाया गया है, लेकिन पॉपओवर दिखाई नहीं दे रहा है।

क्या ऐसा करने का कोई विशेष तरीका है?

कोड काम करता है अगर मैं इसे संग्रह दृश्य कक्ष के अलावा किसी अन्य चीज़ से प्रदर्शित करता हूं।

निम्नलिखित कोड UICollectionViewCell उपclass में है।

if (_infoPopover == nil) { 
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
    GameInfoViewController *gameInfoVC = (GameInfoViewController *)[storyboard instantiateViewControllerWithIdentifier:@"GameInfoViewController_ID"]; 

    UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:gameInfoVC]; 
    _infoPopover = popover; 
    [gameInfoVC setGameNameString:_gameNameLabel.attributedText]; 
} 

[_infoPopover presentPopoverFromRect:_infoButton.frame inView:self permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 

धन्यवाद!

+0

कृपया कोड दिखाएं जहां आप पॉपओवर प्रदर्शित करने का प्रयास करते हैं। आप शायद गलत रेक्ट का उपयोग कर रहे हैं। – jrturton

+0

अपडेटेड, ऊपर देखें। –

उत्तर

5

UIViewController से पॉपओवर करें, UICollectionViewCell में नहीं। तो, नियंत्रण के लिए प्रतिनिधि का उपयोग करें।

//Cell.m 
-(void)popOVerClick:(UIButton *)button{ 
    [[self delegate] didPopOverClickInCell:self]; 
} 

लागू प्रोटोकॉल

//ViewController 
    -(void)didPopOverClickInCell:(MyCell *)cell{ 
    if ([self.flipsidePopoverController isPopoverVisible]) { 
     [self.flipsidePopoverController dismissPopoverAnimated:YES]; 
    } else { 

     FlipsideViewController *controller = [[FlipsideViewController alloc] initWithNibName:@"FlipsideViewController" bundle:nil]; 
     controller.label.text = cell.title; 
     controller.delegate = self; 

     self.flipsidePopoverController = [[UIPopoverController alloc] initWithContentViewController:controller]; 
     [self.flipsidePopoverController presentPopoverFromRect:cell.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 
    } 
} 

और आप के लिए कोड: _infoButton.frame ध्यान में रखते हुए: self.collectionView permittedArrowDirections: collectionView

[_infoPopover presentPopoverFromRect को https://github.com/lequysang/TestPopOver

3

परिवर्तन ध्यान में रखते हुए UIPopoverArrowDirectionAny एनिमेटेड: हाँ];