2012-03-30 16 views
2

Ich verwende MonoTouch.Dialog auf einem iPad-Bildschirm.So legen Sie die Zellenbreite in MonoTouch.Dialog fest

Ich habe einen Vollbild-Hintergrund erstellt, auf dem ich eine MonoTouch.Dialog-Tabelle gezeichnet habe.

Ich möchte die Breite der MonoTouch.Dialog-Tabelle (oder aller Zellen) ändern, während der Vollbild-Hintergrund an Ort und Stelle bleibt. Wie kann ich das machen?

Antwort

0

Sie können dies nicht direkt tun, weil ein DialogViewController ähnlich einem UITableViewController und UITableView ist, die einige Eigenschaften haben, um seinen umgebenden Raum zu füllen. Es gibt einen cleveren Trick, um dies zu umgehen, wo Sie eine "Container" UIView für die gewünschte Breite erstellen und sie als Unteransicht zu einem UIViewController hinzufügen müssen. Jetzt machen Sie Ihren DialogViewController und fügen Sie seine Ansicht als Unteransicht dieses Containers hinzu. Der Dialog wird auf die Größe des Containers statt auf die übergeordnete Ansicht erweitert.

Sie sollten mit etwas am Ende wie folgt:

public class MyController : UIViewController 
{ 
    UIView container; 
    DialogViewController dvc; 

    public override void ViewDidLoad() 
    { 
     base.ViewDidLoad(); 

     container = new UIView(); 
     dvc = new DialogViewController(UITableViewStyle.Grouped, null, true); 
     dvc.Root = new Root("Title") { 
      new Section() { 
       new StringElement("Hello") 
      } 
     }; 

     View.AddSubview(container); 
    } 

    public override void ViewDidLayoutSubviews() 
    { 
     base.ViewDidLayoutSubviews(); 

     // Whatever width you want 
     float newWidth = View.Bounds.Width/2; 
     container.Frame = new RectangleF(0, 0, newWidth, View.Bounds.Height); 

     // This is a workaround so that the TableView fills the container view 
     // after it is sized. 
     container.AddSubView(dvc.View); 
    } 
} 
Verwandte Themen