Как установить ширину ячейки в MonoTouch.Dialog - PullRequest
2 голосов
/ 30 марта 2012

Я использую MonoTouch.Dialog на экране iPad.

Я создал полноэкранный фон, на котором у меня построена таблица MonoTouch.Dialog.

Я хочу изменить ширину таблицы MonoTouch.Dialog (или всех ячеек), покаоставив полноэкранный фон на месте.Как я могу это сделать?

1 Ответ

0 голосов
/ 13 августа 2013

Вы не можете сделать это напрямую, потому что 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);
    }
}
...