1

我正在使用创建iPad应用程序,MonoTouch 2.10.11并且想MonoTouch.Dialog在表单上创建一些可编辑字段。其中一个字段将使用 aRadioGroup允许用户从选项列表中进行选择。的默认行为M.T.D是在现有表格上显示选择列表表格。这对iPhone布局很有用,但是在这个iPad表单上,表格只在表单的一小块区域上,并且导航栏在表单中间看起来很奇怪。我想将选择显示为全屏模式,用户将点击“返回”按钮以返回带有所选项目的前一个表单。

我创建了一个这样的新RootElement后代类:

public class ModalRootElement : RootElement 
{    
    public override void Selected (DialogViewController dvc, UITableView tableView, NSIndexPath path)
    {
        tableView.DeselectRow (path, false);
        UIViewController uIViewController = this.MakeViewController ();
        this.PrepareDialogViewController (uIViewController);
        dvc.PresentViewController (uIViewController, true, null);
    }

    protected override void PrepareDialogViewController(UIViewController dvc)
    {
        base.PrepareDialogViewController(dvc);

        UIButton button = UIButton.FromType (UIButtonType.RoundedRect);
        button.Frame = new RectangleF (5, 5, 80, 20);
        button.SetTitle ("back", UIControlState.Normal);
        button.TouchUpInside += delegate {
            DialogViewController d = dvc as DialogViewController;

            (d.Root as ModalRootElement).TableView.ReloadData ();

            d.DeactivateController(true);
        };
        dvc.View.AddSubview (button);
    }
}

该表使用以下代码实现:

var _status = new ModalRootElement("Status", new RadioGroup("status", -1)) {
    (new Section() {
        new RadioElement("New", "status"),
        new RadioElement("In process", "status"),
        new RadioElement("Rejected", "status"),
        new RadioElement("Deferred", "status"),
        new RadioElement("Transferred", "status"),
        new RadioElement("Unknown", "status"),
        new RadioElement("Complete", "status")
    })
};

var _odom = new EntryElement ("Odometer", "current odom", "");
_odom.KeyboardType = UIKeyboardType.DecimalPad;
_odom.TextAlignment = UITextAlignment.Right;

var root = new RootElement ("back") {
    new Section("") {
        _status,
        _odom
    }
};

_dvc = new DialogViewController(root);
_nav = new UINavigationController (_dvc);
_nav.SetNavigationBarHidden (true, false);

当我运行应用程序时,我可以深入了解RadioGroup并进行选择。当我单击添加到视图中的后退按钮时,模式视图关闭并且对象RadioSelectedModalRootElement属性设置正确,但不显示文本。

如果我将Selected()方法更改为 calldvc.ActivateController而不是PresentViewController,则ModalRootElement显示正确的文本,但RadioGroup表格的大小错误。当您使用而不是时,有没有办法让RootElement显示正确的文本?PresentViewControllerActivateController

4

1 回答 1

0

我认为你需要一个 Root.Reload() 调用。

于 2014-06-02T13:18:27.217 回答