UIPopoverPresentationController sur iPhone ne produit pas de liste

Je suis en train de mettre en œuvre la nouvelle UIPopoverPresentationController dans mon application iPhone (à l'aide d'Objective-C). Ce que je veux, c'est une simple liste à une tableview qui émane de l'ouverture de la touche.

--Edit--

Voici mon RÉVISÉ code, adapté de la recherche dans les docs, DONC, et de l'entrée dans les commentaires ci-dessous:

- (IBAction)selectCategoryBtn:(UIButton *)sender
{
    [self performSegueWithIdentifier:@"CatSelectSegue" sender:self.selCatButton];
}

-(void) prepareForSegue:(UIStoryboardSegue *) segue Sender:(id) sender
{
    if (sender == self.selCatButton)
    {
        if ([segue.identifier isEqualToString:@"CatSelectSegue"])
        {
            UIPopoverPresentationController *controller = segue.destinationViewController;
            controller.delegate = self;
            controller.sourceView = self.selCatButton;
            controller.sourceRect = self.selCatButton.frame;
        }
    }
}


-(UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller
{
    return UIModalPresentationNone;

Voici mon storyboard de branchement:

UIPopoverPresentationController sur iPhone ne produit pas de liste

Cependant, cela présente simplement une tableview dans une modal de la mode, s'élevant du fond et de la consommation de la totalité de l'écran.

J'ai googlé, et regardé partout, mais il semble que je ne suis pas le seul confus par ce que j'avais espéré, délicates à résoudre un problème pour l'iPhone.

Quelqu'un peut voir un problème dans mon code ou me diriger vers un tutoriel clair? J'ai regardé, mais peut-être que l'API est juste pour de nouvelles personne n'a une poignée sur elle encore.

Merci!

2ème edit:

Voici ce qui est présenté comme un résultat du code ci-dessus. J'ai réduit la taille de la tableview dans la Vue Contrôleur je m'attendais à être présenté comme une liste. J'ai coloré l'arrière-plan gris, juste pour clarifier ce qui se montre à la place de la liste.

UIPopoverPresentationController sur iPhone ne produit pas de liste

  • Votre code est OK; UIModalPresentationNone devrait arrêter l'adaptabilité. Vous avez déclaré que votre classe est conforme à la UIAdaptivePresentationControllerDelegate? Est adaptivePresentationStyleForPresentationController: appelée?
  • Non, et c'est peut-être là où les choses se brisant vers le bas pour moi. Je suis en appelant cette méthode du délégué, mais je pensais que c'était une partie de UIPopoverPresentationControllerDelegate, à laquelle mon CR ne sont conformes. Je n'ai pas d'erreurs sans le UIAdaptivePresentationControllerdelegate déclaration. Je trouve cela très confus.
  • Et j'ai besoin de clarifier quelque chose d'autre: Il y a deux Contrôleurs ici, L'un contenant de l'ouverture de la touche, et l'une contenant le tableview. Au risque de paraître stupide, qui VC doit être déclaré comme le UIAdaptivePresentationControllerdelegate?
  • Normalement, j'aurais penser que c'est le CR qui contient le UIBarButtonItem qui déclenche la séquence pour afficher la liste. Cette VC devrait mettre en œuvre l' adaptivePresentationStyleForPresentationController: méthode et aussi être défini comme la liste du délégué. Il doit également être déclaré conforme à UIAdaptivePresentationControllerDelegate.
  • OK, si je comprends bien, ce doit être dans mon CR.h qui détient l'ouverture de la touche: @interface AddTransactionVC : UIViewController <UIPopoverPresentationControllerDelegate,UIAdaptivePresentationControllerdelegate> ?
  • D'ailleurs, je suis à l'aide d'un bouton plutôt qu'un BarButton, si c'est pertinent...
  • UIPopoverController n'a jamais travaillé sur l'iPhone. (à moins que sa été ajouté récemment, peut-être qu'il n'sur iPhone6+, j'ai constaté UIModalSheet présentation des œuvres sur que) cela fonctionne comme prévu sur iPad? si oui, alors il n'y a rien de mal avec votre code, UIKit, c'est de choisir ce qu'il juge être une présentation plus appropriée de style pour le périphérique. Si vous voulez vraiment une liste vous devez vous procurer un open source (Ive utilisé WEPopoverController un peu de temps, fonctionne bien) ou rouler vos propres.
  • Ce n'est pas UIPopoverController, c'est UIPopoverPresentationController, une nouvelle classe dans iOS 8. Je suis en train de l'utiliser car il est censé éliminer la nécessité pour la 3e partie des bibliothèques. Toutefois prometteur, il peut sembler, comme vous pouvez le voir, il est difficile, au moins pour moi. 🙂
  • Votre @interface déclaration semble bon. Appeler à partir d'un bouton standard devrait être OK, même si je n'ai pas essayé. Quelle est la taille de la tableview vous vous présenter? Est-ce la contentSize trop grand pour une petite liste?
  • J'ai juste écrasé la TV vers le bas, mais le vrai problème semble être que prepareForSegue n'est jamais appelé. Voir la version révisée du code à modifier à la question...
  • RoboticCat-s'il vous plaît voir mon commentaire ci-dessous @jef de réponse. Merci d'essayer!
  • J'ai ajouté une réponse qui vous montre comment faire cela en utilisant la UIPopoverPresentationController. @Jef pourriez penser que ce ne peut pas être fait, mais sa réponse est en fait incorrect.
  • Pour moi le problème était que, l'appel de la PopoverViewController par le biais d'un "PerformSegue" partait toujours en Plein Écran. La suppression de la table de montage séquentiel segue manuellement et de les rassembler et de montrer à travers presentViewController résolu.

InformationsquelleAutor rattletrap99 | 2015-02-14