Как установить ширину ячейки в MonoTouch.Dialog

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

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

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


person Robert Smit    schedule 30.03.2012    source источник


Ответы (1)


Вы не можете сделать это напрямую, потому что DialogViewController похож на UITableViewController и UITableView, которые имеют некоторые черты для заполнения содержащегося в нем пространства. Существует хитрый трюк, чтобы обойти это, когда вам нужно будет создать «контейнер» UIView для ширины, которую вы хотите, и добавить его в качестве подпредставления в UIViewController. Теперь создайте свой DialogViewController и добавьте его представление в качестве подпредставления этого контейнера. Диалог расширится до размера контейнера, а не родительского представления.

У вас должно получиться что-то вроде этого:

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);
    }
}
person therealjohn    schedule 13.08.2013