2010-12-01 13 views
5

Gibt es eine Möglichkeit, die Position eines MonoTouch.Dialog DialogViewControllers festzulegen? Ich habe DialogViewController subclassiert und oben eine UIToolbar hinzugefügt und nun möchte ich die Tabellenansicht um die entsprechenden Pixel nach unten verschieben.Einstellung von 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

reinigen Siehe http://stackoverflow.com/questions/9763196/monotouch-dialog-add -a-toolbar-am-unteren-des-Dialogs Ich habe das getestet und es funktioniert für mich. – Felix

Antwort

1

Ich konnte nie die Position der TableView im MonoTouch.Dialog ändern. Es ist jedoch kein Problem der Bibliothek, wie der TableViewController funktioniert, der von MT.Dialog geerbt wird.

Die TableViewController-Klasse soll die Positionierung des TableView automatisch verwalten, und Sie sollten das nicht umgehen. Selbst wenn Sie das TableView mit einer anderen Position erstellen, wie etwa miguel.de.icaza, wird der TableViewController das TableView während der WillAppear-Methode neu anordnen.

Wenn Sie nicht MT.Dialog verwenden, ist der beste Weg um dies zu bewerkstelligen, und um zum Beispiel eine Tabelle auf nur der Hälfte des Bildschirms zu haben ist, den TableViewController zu löschen und einfach einen UIViewController mit einem TableView-Objekt zu verwenden. Sie können den Delegaten und die Datenquelle weiterhin an TableView übergeben, so dass Sie die automatische Positionierung von TableView verlieren.

Ich habe versucht, MT.Dialog von UIViewController anstelle von UITableViewController zu erben, aber das verursachte viele Probleme, und ich konnte es nie beenden. Vielleicht werde ich es eines Tages tun.

Ich würde gerne hören, dass ich aber falsch darüber bin!

-1

einfach die MakeTableView Methode in MyViewController außer Kraft setzen, die Standardimplementierung ist:

return new UITableView (bounds, style) 

Also alles, was Sie tun müssen, ist die übergebenen Grenzen zu ändern.

+1

Danke Miguel. Ich habe beide der folgenden Methoden ausprobiert, und die Tabellenansicht ändert die Position überhaupt nicht. Ich bringe den Haltepunkt, also weiß ich, dass er aufgerufen wird, aber egal welche Werte ich übergebe, der Tisch bewegt sich nicht. öffentliche Überschreibung UITableView MakeTableView (RectangleF Grenzen, UITableViewStyle Stil) { var newBounds = neue RectangleF (500, 500, 10, 10); // return base.MakeTableView (newBounds, style); return new UITableView (newBounds, style); } –

+1

+1. Dieser Vorschlag funktioniert nicht - keine Wirkung. – tomfanning

1

Um ein ähnliches Problem zu umgehen, habe ich die Ableitungskette von DialogViewController geändert, um UIViewController zu erben und das UITableView stattdessen direkt zu erstellen. Dies erlaubte mir, eine Bitmap als Hintergrund zu verwenden, und die einzige Möglichkeit, dies zu tun, besteht darin, die Dinge ein wenig zu ändern. Ich plane dies in den Source-Tree zu überprüfen, wir alle anderen Updates und Code aufzuräumen, aber müssen eine Anzahl der Schnittstellen nach oben

+1

Kenny, hast du diese Arbeit jemals abgeschlossen? Es klingt genau wie etwas, das ich verwenden könnte ... es sei denn, es gibt einen besseren Weg, eine UIToolbar zu einem MonoTouch.Dialog hinzuzufügen ... –

Verwandte Themen