Swift:如何将信息传递给弹出视图?
Posted
技术标签:
【中文标题】Swift:如何将信息传递给弹出视图?【英文标题】:Swift: How to pass information to a pop up view? 【发布时间】:2016-12-30 13:42:00 【问题描述】:我正在尝试使用 github 扩展 (https://github.com/Orderella/PopupDialog) 将信息传递给我的自定义 PopUpViewController。 Popup 使用了一个我命名为 PopUpViewController 的视图控制器(带有一个 xib 文件),并且启动 PopUp 的视图控制器称为 MainViewController。
传递给 PopUpViewController 的信息将是一个 String 类型的数组(命名为:popUpArray),用于在一个表(命名为:tableView)中显示包含的信息。
MainViewController 代码:
func showCustomDialog(_ sender: UIButton)
// Create a custom view controller
let PopUpVC = PopUpViewController(nibName: "PopUpViewController", bundle: nil)
// Create the dialog
let popup = PopupDialog(viewController: PopUpVC, buttonAlignment: .horizontal, transitionStyle: .bounceDown, gestureDismissal: true)
// Create second button
let buttonOne = DefaultButton(title: "Ok", dismissOnTap: true)
// Add buttons to dialog
popup.addButton(buttonOne)
// Present dialog
present(popup, animated: true, completion: nil)
PopUpViewController 代码:
import UIKit
class PopUpViewController: UIViewController
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var titleLabel: UILabel!
@IBOutlet weak var tableView: UITableView!
【问题讨论】:
你必须使用协议委托来传递信息。 【参考方案1】:只需在PopUpViewController
上声明一个名为data
的新变量,其类型为Array<String>
。
在此之后,当您创建 viewController 时,您可以将其传递给控制器。之后在PopUpViewController
中实现一个简单的tableView
来显示数据。
使用data
参数扩展PopUpViewController
。
导入 UIKit
class PopUpViewController: UIViewController
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var titleLabel: UILabel!
@IBOutlet weak var tableView: UITableView!
// Data variable
public var data: [String] = []
调用showCustomDialog()
函数时添加数据
// Create a custom view controller
let PopUpVC = PopUpViewController(nibName: "PopUpViewController", bundle: nil)
// Assign the data
PopUpVC.data = popUpArray
【讨论】:
感谢您的回复。啊,所以流程和发送数据的prepareForSegue方法差不多吧? 经过测试,效果很好。谢谢你的帮助!现在最好把干草叉收起来...... 酷,很高兴听到它兄弟 ;)【参考方案2】:在 PopUpViewController 中创建一个方便的 init,如下所示
convenience init(nibName: String, arrayOfString: [String] )
self.data = arrayOfString
self.init(nibName: nibName, bundle:nil)
然后在 MainViewController 上调用你刚刚创建的便利 init 就像这样
// Create a custom view controller
let PopUpVC = PopUpViewController("PopUpViewController", arrayOfString: ["String1", "String2"])
【讨论】:
以上是关于Swift:如何将信息传递给弹出视图?的主要内容,如果未能解决你的问题,请参考以下文章
PHP 通过 SQL 查询中的 Href 链接将变量传递给弹出页面
Swift:如何将数据从 TableViewController 传递到 Details VC