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 链接将变量传递给弹出页面

使用javascript将父div传递给弹出div

Swift:如何将数据从 TableViewController 传递到 Details VC

斯威夫特:你如何将信息传递给当前视图控制器下面的视图控制器?

如何在表格视图的 didSelect 上显示弹出框

Swift - 如何将视图控制器的引用传递给子 UIView 类?