Могу ли я добавить UIActivityViewController в свой ViewController? - PullRequest
0 голосов
/ 21 мая 2019

Я работаю над кнопкой обмена фотографиями, которая используется по умолчанию в приложении "Фотографии".

Когда я нажимаю кнопку «Поделиться», она добавляется как SubView (uiactivityviewcontroller / uiactivityviewcontroller.view) в моем viewcontroller?

Example Image

Мой код:

   let text = "This is some text that I want to share."

    // set up activity view controller
    let textToShare = [ text ]
    let activityViewController = UIActivityViewController(activityItems: textToShare, applicationActivities: nil)

    // exclude some activity types from the list (optional)
    //activityViewController.excludedActivityTypes = [ .airDrop,.postToFacebook ]

    // present the view controller
    if (UIDevice.current.userInterfaceIdiom == .phone){
       self.containerView.addSubview(activityViewController.view)
    }else{
        activityViewController.popoverPresentationController?.sourceView = self.view // so that iPads won't crash
        self.present(activityViewController, animated: true, completion: nil)
    }

Но этот код выдает мне ошибку. UIActivityViewController может использоваться только модально или как contentViewController в popover на iPad.

Есть ли лучшее решение?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 21 мая 2019

Проблема в этой строке:

self.containerView.addSubview(activityViewController.view)

Это незаконно (несколькими способами!). Вы должны представить контроллер вида деятельности, например:

self.present(activityViewController, animated: true)
0 голосов
/ 21 мая 2019

В соответствии с документацией, вы должны модально представить деятельность Controller

Система предоставляет несколько стандартных услуг, таких как копирование элементов в монтажную панель, размещение контента на сайтах социальных сетей, отправка элементов по электронной почте или SMS,и больше.Приложения также могут определять пользовательские сервисы.Ваше приложение отвечает за настройку, представление и отклонение этого контроллера представления.Конфигурация для контроллера представления включает в себя указание объектов данных, с которыми должен работать контроллер представления.(Вы также можете указать список пользовательских сервисов, которые поддерживает ваше приложение.) Представляя контроллер представления, вы должны сделать это, используя соответствующие средства для текущего устройства.На iPad вы должны представить контроллер представления во всплывающем окне. На iPhone и iPod touch вы должны представить его модально .

Для получения дополнительной информации Нажмите здесь

...