MonoTouch对话 - OnTap不工作

时间:2012-08-27 11:54:05

标签: c# xamarin.ios monotouch.dialog

我正在使用Reflection API for MonoTouch.Dialog。我想要完成的是,当用户从列表中选择一个项目时,我希望导航控制器返回。我不想强迫用户单击某个项目,然后单击“返回”按钮返回。

但是,在尝试使用OnTap属性时,我的方法无法执行。

public override bool FinishedLaunching (UIApplication app, NSDictionary options)
{
    window = new UIWindow (UIScreen.MainScreen.Bounds);

    var demo = new DemoClass();
    var context = new BindingContext(this, demo, "Some Demo");
    var controller = new DialogViewController(context.Root);
    var navController = new UINavigationController(controller);

    window.RootViewController = navController;
    window.MakeKeyAndVisible ();

    return true;
}

public void EnumSelected()
{
    InvokeOnMainThread(() =>
    {
        new UIAlertView("Dialog", "Enum Selected", null, "OK", null).Show();
    });
}

DemoClass

public enum DemoEnum
{
    SomeValue,
    AnotherValue,
    YetAnotherValue
}

public class DemoClass
{
    [OnTap("EnumSelected")]
    public DemoEnum SomeEnum;   
}

我知道如何使用导航控制器导航回来,但如果没有OnTap工作,我就无法做到这一点。我错过了什么吗?谁能看到我哪里错了?

1 个答案:

答案 0 :(得分:1)

总之,你不能。

Enum(导致一个新的RootController和一堆RadioElement)不能有OnTap设置,除非你手动完成。

https://github.com/migueldeicaza/MonoTouch.Dialog/blob/master/MonoTouch.Dialog/Reflect.cs#L337

尤其是这些位:

csection.Add (new RadioElement (ca != null ? ca.Caption : MakeCaption (fi.Name)));

element = new RootElement (caption, new RadioGroup (null, selected)) { csection };

RadioElement没有添加任何触发器。您需要将其更改为自动弹出表单 - 这需要新的/更改的RadioElement

https://gist.github.com/3569920

(我无法声明此代码 - 它来自@escoz:https://github.com/escoz/MonoMobile.Forms

因此,如果您使用的是内置MT.D,则无法执行此操作。如果你不介意维护自己的分支(或者提交拉回请求,这是我需要做的一些事情),那么这是一个相当不错的方法。