Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift PopOverController自定义大小和sourceRect不起作用_Swift - Fatal编程技术网

Swift PopOverController自定义大小和sourceRect不起作用

Swift PopOverController自定义大小和sourceRect不起作用,swift,Swift,添加了一个bar按钮,单击bar按钮后,将显示tableview。在我的实现中有两个问题 首先,我无法用我的BarButtonItem 其次,TableView将全屏显示,而不是我定义的自定义大小 let button = UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.refresh, target: self, action: #selector(displayClassRooms(_:))) navigatio

添加了一个bar按钮,单击bar按钮后,将显示tableview。在我的实现中有两个问题

首先,我无法用我的
BarButtonItem

其次,
TableView
将全屏显示,而不是我定义的自定义大小

let button = UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.refresh, target: self, action: #selector(displayClassRooms(_:)))
navigationItem.rightBarButtonItem = button



@objc private func displayClassRooms(_ sender: UIBarButtonItem) {
    let popController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ClassRoomVC")
    popController.modalPresentationStyle = UIModalPresentationStyle.popover
    popController.popoverPresentationController?.sourceView = self.view
    popController.popoverPresentationController?.permittedArrowDirections = .up
    popController.popoverPresentationController?.sourceRect = CGRect.init(x: 300, y: 0, width: 50, height: 180 )
    popController.preferredContentSize = CGSize.init(width: 200, height: 200)
    present(popController, animated: true, completion:nil)
}

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

UIPopoverPresentationControllerDelegate
分配给您的控制器类

设置popController委托

    let popoverContentController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ClassRoomVC")
    popoverContentController?.modalPresentationStyle = .popover
    
    if let popoverPresentationController = popoverContentController?.popoverPresentationController {
        popoverPresentationController.permittedArrowDirections = .up
        popoverPresentationController.sourceView = self.view
        popoverPresentationController.sourceRect = CGRect.init(x: 300, y: 0, width: 50, height: 180 )
        popoverPresentationController.delegate = self
        if let popoverController = popoverContentController {
            present(popoverController, animated: true, completion: nil)
        }
    }

是的,我已经在我的课堂上添加了
UIPopoverPresentationControllerDelegate
,但是是同一个问题。现在发生了什么,请告诉我。我在问题中报告的同一个问题,popover仍然显示在全屏上。我在我这边试过,效果很好,但这里我从按钮框中取出一个按钮和pop控制器作为源矩形试着这样做,让我知道它是否有效?是的,当然,等等。