iPhone弹出框上的导航栏

时间:2018-09-14 01:10:52

标签: ios swift uinavigationbar popover

我并没有要求太多,但我会提供很多信息来了解如何在此弹出窗口上获得导航栏:

enter image description here

这是我的故事板:

enter image description here

这是显示弹出窗口的代码:

    @IBAction func doButton(_ sender: Any) {
        let vc = PopViewController()
        vc.preferredContentSize = CGSize(width: 260,height: 300)
        vc.modalPresentationStyle = .popover
        vc.view.backgroundColor = UIColor.green
        if let pres = vc.presentationController {
            pres.delegate = (self as UIAdaptivePresentationControllerDelegate)
        }
        self.present(vc, animated: true)
        if let pop = vc.popoverPresentationController {
            pop.sourceView = (sender as! UIView)
            pop.sourceRect = (sender as! UIView).bounds
            pop.backgroundColor = vc.view.backgroundColor
        }
    }
}

extension ViewController : UIPopoverPresentationControllerDelegate {
    func adaptivePresentationStyle(for controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle {
        return .none
    }
}

(感谢@matt,顺便说一句,上面的代码!)

我在Google上搜索过高低,但没有找到我能理解的答案。我尝试在情节提要中添加nav bar,但没有骰子-唯一接受的元素是prototype cell中的table view

请不要重定向到7年前写的东西-我已经阅读了其中大部分内容,并且现在正在使用Swift。当然,我可能忽略了一个明确的答案,如果真是那样,我会谦虚而and悔。但是与此同时,如果您能得到帮助,我一定会感谢您的帮助!

谢谢!

1 个答案:

答案 0 :(得分:1)

将右侧的tableview控制器更改为具有tableViewController根的导航控制器。导航控制器将获得一个标识符:“导航”。

right nav controller

enter image description here

现在您可以更改doButton函数的第一个代码,并保留其余的代码。

 @IBAction func doButton(_ sender: Any) {

let vc = self.storyboard?.instantiateViewController(withIdentifier: "navigation") as! UINavigationController


    vc.preferredContentSize = CGSize(width: 260,height: 300)
    vc.modalPresentationStyle = .popover
    vc.view.backgroundColor = UIColor.green
    if let pres = vc.presentationController {
        pres.delegate = (self as UIAdaptivePresentationControllerDelegate)
    }
    self.present(vc, animated: true)
    if let pop = vc.popoverPresentationController {
        pop.sourceView = (sender as! UIView)
        pop.sourceRect = (sender as! UIView).bounds
        pop.backgroundColor = vc.view.backgroundColor
    }
}

最后,您将在弹出窗口中找到导航栏。