Как представить активность ViewController из UICollectionView в Swift - PullRequest
0 голосов
/ 11 мая 2018

В настоящее время у меня есть UICollectionView, где я хочу иметь возможность предоставить activityViewController для включения общего доступа (не из ячейки, а из UIView в collectionView).Проблема в том, что приведенный ниже код не работает, потому что present() является методом viewController.

let activityViewController = UIActivityViewController(activityItems: [test], applicationActivities: nil)
present(activityViewController, animated:true, completion:nil)

Я попытался создать экземпляр viewController для вызова present(), однако это не работаетпотому что его нет в иерархии представлений.

Ближайший ответ на вопрос, который я нашел, - это упоминание о слабом делегате, но я не уверен, как заставить это работать.

Ищете какие-либо идеи о том, как сделать эту работу.Спасибо

Обновление Моя иерархия состоит из viewController HomeViewController, затем я отображаю collectionView routeDetailCollectionView в нижней половине экрана.В routeDetailCollectionView у меня есть UIView routeHeaderView a, который содержит UIButton shareButton.Я хочу отобразить меню общего доступа ios при нажатии shareButton.

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Вы должны получить rootViewController из UIApplication, используя метод ниже

func topMostController() -> UIViewController {
  var rootViewController: UIViewController = UIApplication.shared.keyWindow!.rootViewController!
  while (rootViewController.presentedViewController != nil) {
    rootViewController = rootViewController.presentedViewController!
  }
  return rootViewController
}

После этого используйте rootViewController для представления UIActivityViewController

let rootViewController = topMostController()

let activityViewController = UIActivityViewController(activityItems: [test], applicationActivities: nil)
rootViewController?.present(activityViewController, animated:true, completion:nil)
0 голосов
/ 11 мая 2018

Вы можете использовать делегат для связи с родительским viewcontroller и представления оттуда. Oru, если вы используете навигационный контроллер, вы можете представить его оттуда

...