Monotouch.Dialog加载叠加未显示

时间:2013-08-23 09:49:06

标签: view xamarin.ios loading monotouch.dialog

我正在使用此处的重叠代码 - http://docs.xamarin.com/recipes/ios/standard_controls/popovers/display_a_loading_message

它工作得很好......,我能够拨打View.Add(loadingOverlay)

...直到我将内容更改为MonoTouch.Dialog并且它不再起作用。

public partial class BaseView : UIViewController
{
    LoadingOverlay loadingOverlay;

    public void ProgressDialogShow(string message, string title)
    {
        loadingOverlay = new LoadingOverlay(message, UIScreen.MainScreen.Bounds);
        View.Add(loadingOverlay);
    }
}

View本身(LoginView)继承自BaseView。

[Register("SecondLoginView")]
public class SecondLoginView : BaseView
{
    public override void ViewDidLoad()
    {
        base.ViewDidLoad();
        window = new UIWindow(UIScreen.MainScreen.Bounds);

        root = new RootElement("Login") {
            new Section() {
            new EntryElement ("Benutzer", "Login", "Test")
            }
        };
        rootVC = new DialogViewController(root);
        nav = new UINavigationController(rootVC);
        window.RootViewController = nav;
        window.MakeKeyAndVisible();
    }
}

在这种情况下,Loadingoverlay未显示。我如何在MonoTouch.Dialog中使用它?

任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:1)

在你的第二课“secondloginview”中,你似乎正在尝试做一些通常在app delegate文件中完成的事情。

在那段代码中:

您正在做的是将导航控制器放入应用程序的根视图控制器中,然后将登录窗口设置为连接到该Nav控制器的唯一视图控制器。

我认为你想要做的是删除导航控制器代码并使用this.PresentviewController(RootVC,true);

显示用于登录的对话框视图控制器。

答案 1 :(得分:1)

Slack Shot在正确的轨道上。您遇到问题的原因是因为您正在奇怪地构建应用程序。您的window.MakeKeyAndVisible课程不应该有window.RootViewControllerSecondLoginView作业。

您可以将rootVC添加为子视图,如下所示:

V iew.Add(rootVC.View);

我相信你可以用你的代码以某种方式做到这一点,但我总是使用DialogViewController的方式(如果它的唯一视图意味着在屏幕上)我直接从它继承。如果您想提供一些常见的叠加代码,请将您的BaseView设为DialogViewController并继承。

Something like: 

public partial class BaseDialogController : DialogViewController
{
    LoadingOverlay loadingOverlay;

    public void ProgressDialogShow(string message, string title)
    {
        loadingOverlay = new LoadingOverlay(message, UIScreen.MainScreen.Bounds);
        View.Add(loadingOverlay);
    }
}

您应该从视图控制器中删除此代码:

    nav = new UINavigationController(rootVC);
    window.RootViewController = nav;
    window.MakeKeyAndVisible();

如果要在nav中创建控制器,请在创建SecondViewController的任何位置执行此操作。在您的情况下,它可能在故事板文件中。