Xamarin IOs проблема с сохранением файла с помощью диалога - PullRequest
0 голосов
/ 22 января 2019

Я делаю приложение xamarin для iphone и имею проблему. Внизу мой класс, который я использовал для openFile из потока. Это файл Excel. Я получаю файл и открываю диалог - как во вложении. Когда я нажимаю кнопку, чтобы сохранить файл или открыть в Excel, иногда я получаю новый диалог с местами для сохранения файла или открытия приложения Excel, но иногда диалоговое окно для сохранения файла и Excel не открывается, хотя поток не пустой. Каждый раз, когда я отлаживаю путь один и тот же. Есть идеи, почему это не работает каждый раз?

введите описание изображения здесь

public void OpenFile(Stream fileStream)
    {
        if (fileStream == null || fileStream.Length == 0)
        {
            throw new Exception("File download error");
        }

        using (fileStream)
        {
            var documents = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
            var filename = Path.Combine(documents, "Report " + DateTime.UtcNow.ToShortDateString() + ".xls");

            File.WriteAllBytes(filename, fileStream.ReadAsBytes());

            var viewer = UIDocumentInteractionController.FromUrl(NSUrl.FromFilename(filename));
            var controller = GetVisibleViewController();
            viewer.PresentOpenInMenu(controller.View.Frame, controller.View, true);
        }
    }
    private static UIViewController GetVisibleViewController(UIViewController controller = null)
    {
        controller = controller ?? UIApplication.SharedApplication.KeyWindow.RootViewController;

        if (controller.PresentedViewController == null)
            return controller;

        if (controller.PresentedViewController is UINavigationController uinav)
        {
            return uinav.VisibleViewController;
        }

        if (controller.PresentedViewController is UITabBarController uitab)
        {
            return uitab.SelectedViewController;
        }

        return GetVisibleViewController(controller.PresentedViewController);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...