如何在MonoTouch.Dialog中设置单元格宽度

时间:2012-03-30 09:21:03

标签: ipad xamarin.ios monotouch.dialog

我在iPad屏幕上使用MonoTouch.Dialog。

我创建了一个全屏背景,我在其上绘制了MonoTouch.Dialog表。

我希望更改MonoTouch.Dialog表(或所有单元格)的宽度,同时保留全屏背景。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

你不能直接这样做,因为DialogViewController类似于UITableViewController和UITableView,它们有一些特征来填充它的包含空间。有一个巧妙的技巧可以解决这个问题,你需要为你想要的宽度创建一个“容器”UIView,并将它作为子视图添加到UIViewController。现在制作DialogViewController并将其View添加为该容器的子视图。对话框将扩展到容器的大小,而不是父视图。

你应该得到这样的东西:

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);
    }
}