Comment bien présenter une liste à partir d'un UITableViewCell avec UIPopoverArrowDirectionRight ou UIPopoverArrowDirectionLeft
J'essaie toujours de présenter une liste à partir d'une cellule à l'intérieur d'une tableView de cette façon:
[myPopover presentPopoverFromRect:cell.frame inView:self.tableView permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
mais je ne peux pas utiliser UIPopoverArrowDirectionRight ou à Gauche, parce que, selon la position
de l'ipad (portrait ou paysage), la liste apparaît à un autre endroit.
Suis-je la présentation de la liste de la bonne façon?
PS: la vue de la table est dans la fenêtre detravail d'un écran à double affichage splitview.
- comment instancier myPopover?
Vous devez vous connecter pour publier un commentaire.
Ici est la solution simple qui fonctionne très bien pour moi
Vous obtenez l'image à partir de la cellule via la rectForRowAtIndexPath méthode. Cela est correct. Toutefois, la tableview agit probablement d'une sous-vue d'une plus grande iPad vue ainsi, lorsque la liste obtient les coordonnées qu'il pense qu'ils sont dans l'afficher en plus grand. C'est pourquoi la liste apparaît dans le mauvais endroit.
Exemple, la CGRect pour la ligne (0,40,320,44). Au lieu de la liste de ciblage de cette image sur la tableview à la place des objectifs de cette image sur votre écran principal.
J'ai résolu ce problème en convertissant l'image à partir de la position relative de la table à coordonnées dans mon agrandir.
code:
Espoir qui aide les autres à la recherche de ce problème.
[tableView cellForRowAtIndexPath:indexPath]
, ce qui est une mauvaise chose à faire. N'était même pas au courant de-rectForRowAtIndexPath:
. Merci!Je suis tombé sur ce problème aujourd'hui, et j'ai trouvé une solution plus simple.
Lors de l'instanciation de la liste, vous devez spécifier le contenu de la cellule de vue:
Dans Swift, entre les réponses ci-dessus, cela fonctionne pour moi sur un iPad dans n'importe quelle orientation:
De la pop une liste à côté de l'accessoire u pouvez utiliser ce code 🙂
- Je l'utiliser pour plus utilisation avancée:
Peut être utiliser pour UIActionSheet ou UIPopoverController.
Voici mon code:
Testé dans iOS 4.3 5.1
Préférable d'utiliser comme méthode personnalisée:
Et le code de la méthode:
Je n'ai rencontré ce problème ainsi. Une solution pour moi était simplement de modifier la largeur de la rect retourné par
CGRect)rectForRowAtIndexPath:(NSIndexPath *)indexPath
:Cela créer un rectangle centré à l'intérieur de la cellule. De cette façon, la liste a plus de chances de connaitre un bon endroit pour se positionner.
CGRect rectToUse = targetCell.bounds; rectToUse.origin.x = rectToUse.size.width - 200; rectToUse.size.width -= rectToUse.origin.x;
La cellule de trame va être quelque chose comme 0,0,la largeur,la taille, je ne crois qu'il va avoir son X et Y par rapport à la tableView...vous souhaitez utiliser - (CGRect)rectForRowAtIndexPath:(NSIndexPath *)indexPath pour cela, cela devrait vous renvoyer le bon cadre pour la cellule par rapport à la tableView...voici un lien UITAbleView ref
J'ai eu le même genre de problème, voici la solution que j'ai utilisé :
voici un exemple de code
Dans MyCustomTableViewCell.m :
et le, dans MyDetailViewController.m :
PS : bien sûr, l '"action" n'a pas à être une IBAction, et l'image de où la liste est originaire n'a pas à être un UIButton - un seul UIView serait bien 🙂
C'est la façon dont je l'ai fait et fonctionne parfaitement bien.
Cela a également travaillé pour moi:
Accepté la réponse ne peut pas compiler maintenant.