2009-09-08 7 views
1

J'ai un projet iPhone débutant. J'ai un TableView, qui est juste une liste avec un tas d'entrées et un petit UiView en bas. Voir la photoComment empêcher un UiView de glisser sous TableView?

Le problème est que l'UiView fait essentiellement partie de la liste et n'apparaîtra que lorsque je descendrai au dernier élément de TableView. Je voudrais que l'UiView soit ancrée sur le fond et ne bouge jamais. J'ai regardé tout autour de l'Interface Builder et ne peux rien trouver (bien que dans sa défense je suis un total noob à iPhone dev). Comment puis-je accomplir un tour comme celui-ci?

alt text http://www.sqleffects.com/mystuff/ibissue.jpg

Répondre

0

La ligne du bas est la suivante: si vous créez votre projet basé sur le modèle de navigation, vous ne pouvez pas redimensionner l'UiTableView, période . Pour faire ce que je veux, je dois commencer à partir de rien et choisir un modèle basé sur la vue ou la fenêtre et y déposer manuellement le UiTableView.

1

Le problème est sans doute, qu'en ce moment, le UIView est une vue en bas de page de la section, et est donc contenu dans la vue du tableau. Si vous supprimez l'UIView de TableView, mettez à l'échelle le TableView pour faire de la place pour UIView et un peu plus et placez votre UIView là où vous le voulez, il sera probablement ajouté à l'aperçu de TableView. Vous pouvez ensuite redimensionner le TableView à la bonne taille.

+0

J'ai essayé de le faire, mais je TableView ne semble pas être redimensionnable et les zones de texte Hauteur et Largeur de la fenêtre Inspecteur sont grisées. – AngryHacker

+0

Vous pouvez essayer de supprimer d'abord * à la fois TableView et UIView, puis d'abord ajouter l'UIView (et lui donner la bonne taille + position), puis ajouter correctement la position UITableView et la redimensionner afin qu'elle ne chevauche pas le UIView. Vous devrez peut-être raccorder l'IBOutlet du propriétaire du fichier au nouveau TableView. Vous pouvez essayer de supprimer à la fois le TableView et le UIView, puis d'ajouter le UIView en premier et le tableau en second. Interface Builder ne sera probablement pas masquer – mrueg

3

Ok, ce que vous avez besoin est un UIView, qui contient

  1. un UIView, qui agit comme TableViewController et doit donc mettre en œuvre les protocoles UITableViewDelegate et UITableViewDataSource (mais il NE DOIT PAS être dérivé de UITableViewController directement, car en ce faisant, le UITableView prendra automatiquement toute la taille de l'écran (à l'exception des barres d'outils, barres de navigation et/ou tabbars))
  2. une autre UIView, celui que vous souhaitez placer au fond

par Ce faisant, vous pouvez créer un UITableView dans IB (pas un UITableViewController!) et le connecter avec la propriété UITableView dans votre UIView (celui mentionné dans 1.)

en utilisant cette méthode, il est possible de donner à UITableView un fixe taille (dont vous aurez besoin, pour avoir la place en bas pour votre deuxième UIView)

+0

Vous devriez faire un screencast et l'afficher sur youtube, de sorte que noobs comme moi puisse le mieux grok. – AngryHacker

2

Pour générer la réponse de gabtub, l'UIView contenant votre vue de table et votre vue de dessous n'a pas besoin d'implémenter les méthodes UITableViewDelegate et UITableViewDataSource. Comme il semble que vous construisez avec un contrôleur de vue, je ferais de votre contrôleur principal une sous-classe de UIViewController (au lieu d'utiliser UITableViewController). Vous pouvez ensuite ajouter votre UITableView et votre UIView l'instance d'affichage de UIViewController.Je ferais en sorte que votre sous-classe UIViewController implémente les protocoles UITableViewDelegate et UITableViewDataSource - vous obtiendrez quelque chose qui ressemble (code-sage) à votre ancienne sous-classe UITableViewController, mais sa propriété view sera l'UIView sous-jacent de l'instance UITableView (si vous explorez le débogueur, la vue [UITableViewController] et [UITableViewController tableView] renvoient le même objet)

Un des avantages par rapport à la suggestion de gabtub est qu'il vous évite de créer un de la sous-classe UIView, puisque vous avez probablement déjà une sous-classe unique UIViewController (ou, auparavant, une sous-classe unique UITableViewController).

Questions connexes