我正在使用创建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
并进行选择。当我单击添加到视图中的后退按钮时,模式视图关闭并且对象RadioSelected
的ModalRootElement
属性设置正确,但不显示文本。
如果我将Selected()
方法更改为 calldvc.ActivateController
而不是PresentViewController
,则ModalRootElement
显示正确的文本,但RadioGroup
表格的大小错误。当您使用而不是时,有没有办法让RootElement
显示正确的文本?PresentViewController
ActivateController