6

Sto cercando di presentare un UIPopoverController da un pulsante su UICollectionViewCell.Presentazione di un UIPopoverController da UICollectionViewCell

Finora tutto è stato creato ok, ma il popover non è visibile.

C'è un modo speciale per farlo?

Il codice funziona se lo visualizzo da qualsiasi altra cosa diversa da una cella di visualizzazione della raccolta.

Il seguente codice si trova nella sottoclasse UICollectionViewCell.

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]; 

Grazie!

+0

Mostrare il codice in cui si tenta di visualizzare il popover. Probabilmente stai usando il rect sbagliato. – jrturton

+0

Aggiornato, vedi sopra. –

risposta

5

Eseguire PopOver da UIViewController, non in UICollectionViewCell. Quindi, usa delegato per controllare.

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

implementare il protocollo

//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]; 
    } 
} 

E il codice per voi: https://github.com/lequysang/TestPopOver

3

cambiamento InView per CollectionView

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