Swift 3:从动态 uitableviewcell 内的按钮到 uiviewcontroller 的弹出连接
Swift 3: popover connection from button inside dynamic uitableviewcell to uiviewcontroller
您好,我正在尝试将 viewcontroller 与 table 视图单元格内的 uibutton 连接为弹出窗口连接。我有一个小视图控制器,里面有 2 个按钮,应该是我的弹出窗口。我有一个 table 视图,其中包含许多单元格和这些单元格中的按钮。当用户单击特定按钮时,我想在单击的按钮上打开一个带有锚点的弹出窗口,就像静态内容上弹出窗口连接的默认行为一样。
但是在处理动态内容时,我在故事板中遇到了这个错误:
无法编译连接...
这是我正在尝试做的事情和我得到的错误的一个小例子:
我不想使用隐藏的 1 像素按钮之类的脏东西。我尝试创建自定义 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)
}
}
如果您的弹出视图只有按钮,您可以使用 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)
您好,我正在尝试将 viewcontroller 与 table 视图单元格内的 uibutton 连接为弹出窗口连接。我有一个小视图控制器,里面有 2 个按钮,应该是我的弹出窗口。我有一个 table 视图,其中包含许多单元格和这些单元格中的按钮。当用户单击特定按钮时,我想在单击的按钮上打开一个带有锚点的弹出窗口,就像静态内容上弹出窗口连接的默认行为一样。
但是在处理动态内容时,我在故事板中遇到了这个错误: 无法编译连接...
这是我正在尝试做的事情和我得到的错误的一个小例子:
我不想使用隐藏的 1 像素按钮之类的脏东西。我尝试创建自定义 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)
}
}
如果您的弹出视图只有按钮,您可以使用 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)