【问题标题】:How to show UITableViewController as a UIPopover ViewController如何将 UITableViewController 显示为 UIPopover ViewController
【发布时间】:2016-09-03 19:28:36
【问题描述】:

我需要使用 tableview 控制器显示一个弹出窗口。

我正在使用以下代码来呈现弹出窗口

func showPopOver() {

让 secondStoryboard = UIStoryboard(name: "Second", bundle: nil)

viewObj =  secondStoryboard.instantiateViewControllerWithIdentifier("ViewController") as! ViewController
viewObj.modalPresentationStyle = UIModalPresentationStyle.Popover
viewObj.preferredContentSize = CGSizeMake(400,500)

let popoverPresentationController = viewObj.popoverPresentationController
popoverPresentationController?.delegate = self
popoverPresentationController?.sourceView = self.view //walletButton
popoverPresentationController?.sourceRect = CGRectMake(0, button.frame.origin.y+100, 0, 0)
presentViewController(viewObj, animated: true, completion: nil)
}

//MARK:- UIPopoverPresentationControllerDelegate 方法...开始

func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle{
        return UIModalPresentationStyle.None
    }

就像 UIViewController 那么现在我试图加载 UITableViewController 但它不起作用。 UIPopover 显示但不显示tableview。

请给我建议 提前谢谢你

【问题讨论】:

    标签: swift uitableview uipopovercontroller


    【解决方案1】:
    func showPopOver() {
    
        let tableViewController = UITableViewController()
        tableViewController.modalPresentationStyle = UIModalPresentationStyle.Popover
        tableViewController.preferredContentSize = CGSizeMake(200, 250)
        tableViewController.tableView=FontTable
    
        presentViewController(tableViewController, animated: true, completion: nil)
    
        let popoverPresentationController = tableViewController.popoverPresentationController
        popoverPresentationController?.sourceView = sender as! UIButton
        popoverPresentationController?.sourceRect = CGRectMake(0, 0, sender.frame.size.width, sender.frame.size.height)
        popoverPresentationController?.delegate=self
        popoverPresentationController?.permittedArrowDirections=UIPopoverArrowDirection.Up
    }
    
    func prepareForPopoverPresentation(popoverPresentationController: UIPopoverPresentationController)
    {
    }
    
    func popoverPresentationControllerDidDismissPopover(popoverPresentationController: UIPopoverPresentationController)
    {
    }
    
    func popoverPresentationControllerShouldDismissPopover(popoverPresentationController: UIPopoverPresentationController) -> Bool
    {
        return true
    }
    

    【讨论】:

    • 感谢您的回复。我尝试了上述建议,但没有在弹出窗口中获取 TableViewController。我在 viewDidAppear 中调用这个 showPopOver() 而不是 viewDidLoad 现在它在我的弹出窗口中显示 TVC。
    • 我在 viewDidAppear 中调用这个 showPopOver() 而不是 viewDidLoad 以及上面的 UIPopover 委托方法,然后它在我的弹出窗口中显示 TVC。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多