2010-12-01 19 views
5

¿Hay alguna manera de establecer la posición de un MonoTouch.Dialog DialogViewController? He subbloqueado DialogViewController y he agregado una UIToolbar en la parte superior y ahora quiero desplazar la vista de tabla hacia abajo en los píxeles correspondientes.Configuración de MonoTouch.Dialog UITableView position?

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

Ver http://stackoverflow.com/questions/9763196/monotouch-dialog-add -a-barra de herramientas-en-el-fondo-del-diálogo He probado esto y funciona para mí. – Felix

Respuesta

1

Nunca pude cambiar la posición de TableView en MonoTouch.Dialog. Sin embargo, no es un problema de la biblioteca, es cómo funciona TableViewController, que hereda MT.Dialog.

Se supone que la clase TableViewController gestiona el posicionamiento de TableView automáticamente, y no se supone que deba solucionarlo. Incluso si crea TableView con una posición diferente, como miguel.de.icaza mencionado, el TableViewController reordenará el TableView durante el método WillAppear.

Cuando no se utiliza MT.Dialog, la mejor manera de trabajar con este y, por ejemplo, tener una tabla en la mitad de la pantalla es soltar el TableViewController y simplemente usar un UIViewController con un objeto TableView. Todavía puede pasar el delegado y la fuente de datos a TableView, de manera que simplemente pierde el posicionamiento automático de TableView.

Traté de cambiar MT.Dialog para heredar de UIViewController en lugar de UITableViewController, pero eso causó muchos problemas y nunca pude terminarlo. Quizás algún día lo haga.

¡Me encantaría saber que estoy equivocado al respecto!

-1

Sólo reemplazar el método MakeTableView en MyViewController, la implementación por defecto es:

return new UITableView (bounds, style) 

Así que todo lo que tiene que hacer es cambiar los límites aprobados.

+1

Gracias Miguel. Probé ambos métodos a continuación, y la vista de tabla no cambia de posición en absoluto. Estoy llegando al punto de interrupción, así que sé que se llama, pero no importa qué valores pase, la mesa no se mueve. public override UITableView MakeTableView (límites RectangleF, estilo UITableViewStyle) { newBounds var = new RectangleF (500, 500, 10, 10); // return base.MakeTableView (newBounds, style); return new UITableView (newBounds, style); } –

+1

+1. Esta sugerencia no funciona, no tiene efecto. – tomfanning

1

Para evitar un problema similar, cambié la cadena de derivación de DialogViewController para heredar UIViewController y creo el UITableView directamente en su lugar. Esto me permitió usar un mapa de bits como fondo y la única forma de hacerlo es cambiar las cosas un poco. Tengo planeado verificar esto en el árbol de fuentes que tenemos otras actualizaciones y limpiar el código, pero en su lugar hay que limpiar varias interfaces

+1

Kenny, ¿alguna vez completó este trabajo? Suena exactamente como algo que podría usar ... a menos que haya una mejor manera de agregar una UIToolbar a un MonoTouch.Dialog ... –

Cuestiones relacionadas