Swift3:突然出现流行音乐

时间:2017-02-21 06:12:17

标签: ios swift swift3 uipopover uimodalpresentationstyle

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

但是,它不在屏幕的中心。放屏幕截图供参考。如何将其移至中心并移除方向箭头?

enter image description here

3 个答案:

答案 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)

您必须将sourceViewsourceRect结合使用才能提供弹出式定位点,如下所示:

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)

它会使您的弹出窗口显示在中心,没有箭头/锚点。