代码之家  ›  专栏  ›  技术社区  ›  rattletrap99

iPhone popover上的导航栏

  •  1
  • rattletrap99  · 技术社区  · 7 年前

    我对生活没有太多要求,但我愿意付出很多去了解如何在这款popover上获得导航栏:

    enter image description here

    enter image description here

    下面是我展示popover的代码:

        @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
        }
    }
    

    nav bar 在情节提要中,但没有骰子——唯一可以接受它的元素是 prototype cell table view .

    请不要重定向到7年前写的东西——我已经读了其中的大部分,现在我正在使用Swift。当然,我可能忽略了一个明确的答案,如果是这样的话,我会感到谦虚和懊悔。但同时,如果你得到帮助,我会非常感激的!

    谢谢!

    1 回复  |  直到 7 年前
        1
  •  2
  •   E.Coms    7 年前

    将右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
        }
    }
    

    最后,你会得到导航栏在你的popover。