let obj = MainStoryboard().instantiateViewController(withIdentifier: "SomeVC") as! SomeVC
obj.delegate = self
obj.modalPresentationStyle = .popover
obj.popoverPresentationController?.sourceRect = CGRect(x: self.view.bounds.midX, y: self.view.bounds.midY, width: 0, height: 0)
self.present(obj, animated: true, completion: nil)
在设置断点时,调试器会一直运行到最后一行。之后,它直接转到AppDelegate
类第一行。
我已正确设置异常断点。我可能在哪里弄错了?它与sourceView
的{{1}}有关吗?我不确定。
我想要做的是在中心设置popoverPresentationController
。有什么帮助吗?
修改
我将popoverPresentationController
添加到代码中,例如以下&现在它正在运作:
sourceView
但是,它不在屏幕的中心。放屏幕截图供参考。如何将其移至中心并移除方向箭头?
答案 0 :(得分:2)
执行以下代码更改后,我能够使其正常工作。
let obj = MainStoryboard().instantiateViewController(withIdentifier: "SomeVC") as! SomeVC
obj.delegate = self
obj.modalPresentationStyle = .popover
obj.popoverPresentationController?.permittedArrowDirections = .init(rawValue: 0)
obj.popoverPresentationController?.sourceView = self.view
obj.popoverPresentationController?.sourceRect = CGRect(x: self.view.bounds.midX, y: self.view.bounds.midY, width: 1, height: 1)
self.present(obj, animated: true, completion: nil)
谢谢大家的努力。
答案 1 :(得分:1)
Try this:
let obj = MainStoryboard().instantiateViewController(withIdentifier: "SomeVC") as! SomeVC
obj.delegate = self
obj.modalPresentationStyle = .overCurrentContext
self.navigationController?.present(obj, animated: false, completion: {
})
答案 2 :(得分:1)
您必须将sourceView
与sourceRect
结合使用才能提供弹出式定位点,如下所示:
obj.popoverPresentationController?.sourceView = self.view
obj.popoverPresentationController?.sourceRect = CGRect(x: self.view.bounds.midX, y: self.view.bounds.midY, width: 1, height: 1)
此外,如果您不希望锚点箭头在那里,请使用:
obj.popoverPresentationController?.permittedArrowDirections = .init(rawValue: 0)
它会使您的弹出窗口显示在中心,没有箭头/锚点。