gpt4 book ai didi

ios - 以编程方式将自定义 TableView 创建为弹出窗口

转载 作者:行者123 更新时间:2023-11-28 15:14:35 25 4
gpt4 key购买 nike

如标题所示,我正在使用 Swift 3.0 开发一个 Xcode 项目。我想让我当前的 View 在单击按钮时显示一个较小的 View 作为弹出窗口。 这个弹出窗口将是一个 TableView ,它将显示一个标签 + 一个文本框,用于显示特定数组中的多个单元格。大小将限制在一 block 屏幕上,表格 View 自然可以滚动。

我了解如何以编程方式创建 View ,并且了解了“hidden = true”的概念。我真正苦苦挣扎的是在其中获取 TableView 。理论上我可以在我的 Storyboard中设计 View ,但是是否有一种方法可以通过名称引用它并将它强加到当前 View 上?

感谢您的帮助!

编辑:

感谢一些帮助,我得到了这段代码:

    @IBOutlet weak var CreatePost: UIButton!
@IBAction func CreatePost(_ sender: Any) {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let popVC = storyboard.instantiateViewController(withIdentifier: "CreateAccountPop") // your viewcontroller's id
popVC.preferredContentSize = CGSize(width: 500, height: 600)
popVC.modalPresentationStyle = .popover
let popover = popVC.popoverPresentationController
popover?.delegate = self as? UIPopoverPresentationControllerDelegate
//sourceRect and sourceView is required in case of iPad
popover?.sourceRect = (sender as AnyObject).frame //give anchor frame
popover?.sourceView = sender as! UIView //give anchor view
self.present(popVC, animated: true, completion: nil)
}

代码显示了 View Controller ,但它占据了整个屏幕。我似乎无法弄清楚如何限制它的大小

最佳答案

设计您的 ViewController(最好在 Storyboard 中),使 View 不透明。添加您选择大小的表格 View 。

你可以像这样呈现弹出框

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let popVC = storyboard.instantiateViewController(withIdentifier: "PopVC") // your viewcontroller's id
popVC.modalPresentationStyle = .popover
let popover = popVC.popoverPresentationController
popover?.delegate = self
//sourceRect and sourceView is required in case of iPad
popover?.sourceRect = sender.frame //give anchor frame
popover?.sourceView = sender //give anchor view
self.present(popVC, animated: true, completion: nil)

并且不要忘记让您的呈现 View Controller 符合 UIPopoverPresentationControllerDelegate

关于ios - 以编程方式将自定义 TableView 创建为弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47080719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com