0

我正在使用这里的覆盖代码 - 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);
    }
}

视图本身(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 一起使用?

任何帮助表示赞赏!

4

2 回答 2

1

在您的第二类“secondloginview”中,您似乎正在尝试做通常在应用程序委托文件中完成的事情。

在该代码中:

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

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

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

于 2013-08-24T19:09:08.090 回答
1

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

您可以rootVC像这样添加您的子视图:

iew.Add(rootVC.View);

我相信您可以使用您拥有的代码以某种方式做到这一点,但是我总是使用 a 的方式DialogViewController(如果它是唯一应该在屏幕上的视图)我直接从它继承。如果您想提供一些常见的覆盖代码,请将您的 BaseView 设为 aDialogViewController并继承它。

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();

如果你想在 anav中创建控制器,请在创建 SecondViewController 的任何地方进行。在您的情况下,它可能在故事板文件中。

于 2013-08-26T16:04:05.550 回答