【问题标题】:Swift 3: popover connection from button inside dynamic uitableviewcell to uiviewcontrollerSwift 3:从动态 uitableviewcell 内的按钮到 uiviewcontroller 的弹出式连接
【发布时间】:2017-02-13 20:28:29
【问题描述】:

您好,我正在尝试将视图控制器与表格视图单元格内的 uibutton 连接为弹出连接。我有一个带有 2 个按钮的小视图控制器,里面应该是我的弹出框。我有一个表格视图,其中包含许多单元格和按钮。当用户单击特定按钮时,我想在单击的按钮上打开一个带有锚点的弹出窗口,就像静态内容上的弹出窗口连接的默认行为一样。

但是在处理动态内容时,我的情节提要中出现了这个错误: 无法编译连接...

这是我正在尝试做的事情的一个小样本以及我得到的错误:

我不想使用隐藏的 1 px 按钮之类的肮脏技巧。我尝试创建一个自定义 segue,但它也无法正常工作。

那么实现这一目标的最佳方法是什么?

这是这个示例代码的样子:

import UIKit

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 1
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! CustomTableViewCell

        let button = cell.customButton

        return cell
    }

}


import UIKit

class CustomTableViewCell: UITableViewCell {

    @IBOutlet weak var customButton: UIButton!

    @IBAction func buttonTapped(_ sender: Any) {


    }

    override func awakeFromNib() {
        super.awakeFromNib()
    }

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)
    }

}

【问题讨论】:

  • 为什么要在单元格中使用 uiviewcontroller?
  • 我不想在我的单元格中使用 uiviewcontroller。我也没有正确回答问题
  • 在代码中显示弹出框。您不能将原型单元格中的视图用作情节提要中弹出框的锚视图。
  • 是的,这就是问题所在。那么如何在视图控制器内的正确位置以代码显示弹出框?因为我不能在牢房内呈现它?我已更新帖子以显示此示例的代码

标签: ios swift uitableview swift3 uipopovercontroller


【解决方案1】:

如果您的弹出视图只有按钮,您可以使用UIAlertController,但箭头只会出现在 iPad 中

@IBAction func buttonTapped(_ sender: Any) {

let alertVC = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
alertVC.modalPresentationStyle = .popover
//setup
if let popoverController = alertVC.popoverPresentationController  {
        popoverController.permittedArrowDirections = .any
        popoverController.sourceView = self
        popoverController.sourceRect = self.bounds
    }
}
tableVC.present(alertVC, animated: true, completion: nil)

【讨论】:

  • 是的,但是按钮内部的功能非常复杂
  • 好吧,如果您的按钮 UI 不复杂,那与您的按钮内部逻辑无关。
  • 按钮也是自定义按钮
猜你喜欢
  • 1970-01-01
  • 2016-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-30
  • 2017-08-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多