Подкласс UIWindow в MvvmCross 6 - PullRequest
       5

Подкласс UIWindow в MvvmCross 6

0 голосов
/ 11 января 2019

Перед обновлением до MvvmCross 6 мы использовали в качестве подкласса UIWindow на iOS и устанавливали его как ключевое окно в AppDelagate для обнаружения всех событий в приложениях. В MvvmCross 6.0 теперь изменился способ, которым мы обычно пользовались при установке.

https://www.mvvmcross.com/mvvmcross-6.0.0-release/

Запуск приложения

"То, как приложения начинаются с MvvmCross, теперь стало намного чище. MvxAppStart теперь автоматически вызывается платформой единообразно. Это означает, что вы можете безопасно удалить свой код инициализации на платформах, таких как iOS ( платформа теперь также создаст ключевое окно для вас ). "

Не можете найти способ настроить собственное окно ключа и передать его MvvmCross, какие-либо предложения?

спасибо

Neil

1 Ответ

0 голосов
/ 11 января 2019

Как вы сказали, MvvmCross 6 теперь позаботится о том, чтобы назначить вам KeyWindow. На самом деле, читая исходный код MvvmCross 6+, вы можете увидеть это в FinishedLanchingWithOptions:

public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
    {
        //window is being assigned here by MvvmCross
        if (Window == null)
            Window = new UIWindow(UIScreen.MainScreen.Bounds);

        MvxIosSetupSingleton.EnsureSingletonAvailable(this, Window).EnsureInitialized();

        RunAppStart(launchOptions);

        FireLifetimeChanged(MvxLifetimeEvent.Launching);
        return true;
    }

Тем не менее, они не предоставляют вам возможности для этого. Чтобы это исправить, я бы предложил переопределить и сделать что-то вроде этого:

[Register(nameof(AppDelegate))]
public class AppDelegate : MvxApplicationDelegate<Setup, Core.App>
{
    public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
    {
        if (Window == null)
            Window = new CustomWindow(UIScreen.MainScreen.Bounds);

        base.FinishedLaunching(application, launchOptions);
    }

}

Надеюсь, это поможет

...