2010-12-01 12 views
5

Y at-il un moyen de définir la position d'un MonoTouch.Dialog DialogViewController? J'ai sous-classé DialogViewController et ajouté un UIToolbar en haut et maintenant je veux déplacer la vue de la table vers le bas les pixels correspondants.Position de MonoTouch.Dialog UITableView?

public class MyViewController : DialogViewController 
{ 
    UIToolbar toolbar; 

    public SessionsListViewController (RootElement rootElement) : base(rootElement) 
    { 
     this.toolbar = new UIToolbar(new RectangleF(0,0,768,44)); 
     this.toolbar.Items = new UIBarButtonItem[0]; 
     this.Add(toolbar); 
    } 
} 
+0

Voir http://stackoverflow.com/questions/9763196/monotouch-dialog-add -a-toolbar-at-the-bottom-of-the-dialog J'ai testé ça et ça marche pour moi. – Felix

Répondre

1

Je n'ai jamais été capable de changer la position de TableView dans le MonoTouch.Dialog. Ce n'est pas un problème de la bibliothèque, c'est le fonctionnement de TableViewController, qui est hérité par MT.Dialog. La classe TableViewController est supposée gérer automatiquement le positionnement de TableView, et vous n'êtes pas censé contourner ce problème. Même si vous créez le TableView avec une position différente, comme mentionné par miguel.de.icaza, le TableViewController réorganisera le TableView pendant la méthode WillAppear. Lorsque vous n'utilisez pas MT.Dialog, la meilleure façon de travailler avec cette méthode, et par exemple d'avoir une table sur seulement la moitié de l'écran, est de supprimer TableViewController et d'utiliser simplement UIViewController avec un objet TableView. Vous pouvez toujours passer le délégué et la source de données à TableView, si bien que vous perdez simplement le positionnement automatique de TableView.

J'ai essayé de changer MT.Dialog pour hériter de UIViewController au lieu de UITableViewController, mais cela a causé beaucoup de problèmes et je n'ai jamais pu le finir. Peut-être qu'un jour je le ferai.

J'aimerais entendre dire que je me trompe à ce sujet!

-1

outrepasser la méthode juste MakeTableView dans MyViewController, l'implémentation par défaut est:

return new UITableView (bounds, style) 

Donc, tout ce que vous devez faire est de changer les limites passées.

+1

Merci Miguel. J'ai essayé les deux méthodes ci-dessous, et la vue de table ne change pas de position du tout. Je frappe le point d'arrêt, donc je sais qu'il est appelé, mais peu importe les valeurs que je passe, la table ne bouge pas. public override UITableView MakeTableView (limites RectangleF, style UITableViewStyle) { var newBounds = new RectangleF (500, 500, 10, 10); // return base.MakeTableView (newBounds, style); return new UITableView (newBounds, style); } –

+1

+1. Cette suggestion ne fonctionne pas - aucun effet. – tomfanning

1

Afin de contourner un problème similaire, j'ai changé la chaîne de dérivation de DialogViewController pour hériter de UIViewController et créer le UITableView directement au début. Cela m'a permis d'utiliser un bitmap comme arrière-plan et la seule façon de le faire est de changer les choses un peu. Je prévois de vérifier cela dans l'arbre source, nous autres mises à jour et le code de nettoyage, mais besoin de nettoyer un certain nombre d'interfaces à la place

+1

Kenny, avez-vous déjà terminé ce travail? Cela ressemble exactement à quelque chose que je pourrais utiliser ... à moins qu'il n'y ait une meilleure façon d'ajouter un UIToolbar à un MonoTouch.Dialog ... –