【问题标题】:Drop down list ios swift下拉列表ios swift
【发布时间】:2017-11-25 02:09:08
【问题描述】:

我想要一个小的 UItableView,当点击它时会弹出并在列表中显示一些数字。

我尝试使用 popoverPresentationController,但它在 iOS(iPhone) 设备上显示为全屏。

下面是相同的代码-

let filterVC =  TableViewController(nibName: "TableViewController", bundle: nil)
              filterVC.preferredContentSize = CGSize(width: 300, height: 200)

    filterVC.modalPresentationStyle = UIModalPresentationStyle.popover

    present(filterVC, animated: true, completion: nil)
    let popoverPresentationController = filterVC.popoverPresentationController

    if let pop = filterVC.popoverPresentationController {
        pop.delegate = self
    }

       popoverPresentationController?.sourceView = sender as? UIView
    popoverPresentationController?.sourceRect = sender.frame

//-------

也可以用下面的方法

  func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {
    // Return no adaptive presentation style, use default presentation behaviour
    return .none
}

//-- 任何正确方向的提示将不胜感激。 工作样本会很有帮助

我想要达到的目标如下

【问题讨论】:

    标签: ios swift uitableview uipopovercontroller popover


    【解决方案1】:

    更新

    有一个有用的library你不妨试试看。


    这是因为您的pop.delegate 是在您提交filterVC 之后分配的。

    移动这个

    if let pop = filterVC.popoverPresentationController {
        pop.delegate = self
        pop.sourceView = sender
        pop.sourceRect = sender.bounds
    }
    present(filterVC, animated: true, completion: nil)
    

    到您的filterVC 的初始化应该可以解决问题。顺便说一句,我没有看到您为您的popoverPresentationController 分配了sourceViewsourceRect。将pop.delegate = self 移至此部分应该是合适的。类似的东西

    init(for sender: UIView)) {
        super.init(nibName: nil, bundle: nil)
    
        modalPresentationStyle = .popover
        guard let pop = popoverPresentationController else { return }
        pop.sourceView = sender
        pop.sourceRect = sender.bounds
        pop.delegate = self
    }
    

    【讨论】:

    • 我曾尝试这样做,但导致零问题参考stackoverflow.com/questions/44666281/…
    • 我的意思是你把present(filterVC, animated: true, completion: nil)移到pop.delegate之后。你试过这个吗?您可以查看我编辑的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多