c# - Messagebox.Show 和 DialogResult 在 MonoTouch 中等效

标签 c# iphone ipad xamarin.ios

我有一个来自 UIAlertView 的带有两个按钮的是/否对话框。我想在我的方法中实现与此类似的逻辑:

if(messagebox.Show() == DialogResult.OK)

问题是,如果我调用 UIAlertView.Show(),过程会继续。但我需要等待用户交互的结果,并在单击第二个按钮时返回 true 或 false。这在 MonoTouch 中可能吗?

最佳答案

为此,您可以手动运行主循环。我没有设法直接停止主循环,所以我改为运行主循环 0.5 秒并等待用户响应。

以下函数展示了如何使用上述方法实现模态查询:

int WaitForClick ()
{
    int clicked = -1;
    var x = new UIAlertView ("Title", "Message",  null, "Cancel", "OK", "Perhaps");
    x.Show ();
    bool done = false;
    x.Clicked += (sender, buttonArgs) => {
        Console.WriteLine ("User clicked on {0}", buttonArgs.ButtonIndex);
    clicked = buttonArgs.ButtonIndex;
    };    
    while (clicked == -1){
        NSRunLoop.Current.RunUntil (NSDate.FromTimeIntervalSinceNow (0.5));
        Console.WriteLine ("Waiting for another 0.5 seconds");
    }

    Console.WriteLine ("The user clicked {0}", clicked);
    return clicked;
}

关于c# - Messagebox.Show 和 DialogResult 在 MonoTouch 中等效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4613071/

相关文章:

c# - 如何在 WPF RichTextBox 中突出显示数字

c# - VS11 上的 Windows Workflow Foundation 教程

c# - 如何使用 nameof 而不是魔术字符串来实现 INotifyPropertyChanged?

c# - 获取特定月份的第一个工作日

iphone - 非 ARC 项目中的默认属性声明

ios - 使用代码更改 UITabbar 外观

ios - 如何清除 iOS 9 和 iOS 10 上的缓存

iphone - 你会如何使用 iPhone 称量某物?

iphone - 使用 AVAssetWriter 进行视频编码 - CRASHES

iphone - Apple IOS 应用程序和 Delphi TidCmdTcpServer