ios - (<UIPopoverPresentationController : 0x7fdb10687050>) should have a non-nil sourceView or barButtonItem set before the presentation occurs. '

标签 ios swift uitabbarcontroller uipopovercontroller

我在标签栏 Controller 中创建了一个导航项按钮。

class TabBarContoller: UITabBarController,UIPopoverPresentationControllerDelegate {
 ...
        let languageBtn = UIBarButtonItem(title: "EN", style: UIBarButtonItemStyle.Plain, target: self, action: #selector(Language))
      // navigationItem.rightBarButtonItem = [rightButton , languageBtn]
        navigationItem.setRightBarButtonItems([rightButton,languageBtn], animated: true)

我想在选中此按钮时运行此功能,这将弹出一个 View Controller :

 func showLanguagePopOver(base: UIView)  {
        let popOverContent = self.storyboard?.instantiateViewControllerWithIdentifier("Languages")as! Languages
        popOverContent.preferredContentSize = CGSizeMake(150, 150)
        let nav = UINavigationController(rootViewController: popOverContent)
        nav.modalPresentationStyle = .Popover
        let popOver = nav.popoverPresentationController
        popOver?.delegate = self
        popOver?.sourceView = base
        popOver?.sourceRect = base.bounds
        popOver?.sourceRect = CGRect(x: 0, y: 0, width: 100, height: 25)
        self.presentViewController(nav, animated: true, completion: nil)
    }

我试着这样调用它:

func Language()
{
  showLanguagePopOver(UIView)

  }

它没有用,有什么帮助吗?

最佳答案

swift 5

let controller = UIActivityViewController(activityItems: [link], applicationActivities: nil)
        if UIDevice.current.userInterfaceIdiom == .pad {
            controller.popoverPresentationController?.sourceView = self.view
            controller.modalPresentationStyle = .pageSheet
        }
        vc.present(controller, animated: true, completion: nil)

呈现 View Controller 在 iPad 版本中有所不同,它需要您分配某种源 View ,否则它会崩溃。

关于ios - (<UIPopoverPresentationController : 0x7fdb10687050>) should have a non-nil sourceView or barButtonItem set before the presentation occurs. ',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41714750/

相关文章:

ios - UITapGestureRecognizer 点击 self.view 但忽略 subview

ios - 快捷方式的 Siri Intent Donation 以错误结束

ios - 如何修复 Swift 5.0 中的 “Cannot invoke initializer for type ' MKMapRect' with an argument list of type '(MKMapRect)' '” 错误

ios - 按下 segue 后我的标签栏 Controller 消失了

ios - 使用 RMStore 获取应用程序的原始购买日期的正确方法是什么?

ios - tableView 中不显示评论

swift - 这段代码会导致 swift 崩溃怎么办?

ios - 用于 Swift 1.2 同步请求的 GCDAsyncSocket

ios - 当我从 View 回到标签栏 Controller 时,标签栏不显示

iphone - 动态替换 TabBar 项