2016-12-30 31 views
0

我想通过使用github扩展(https://github.com/Orderella/PopupDialog)将信息传递给我的自定义PopUpViewController。 Popup使用一个名为PopUpViewController(带有xib文件)的视图控制器,并且PopUp从其启动的视图控制器称为MainViewController。Swift:如何将信息传递到弹出视图?

传递给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! 
+0

您必须使用协议委托来传递信息。 –

回答

3

只是声明了dataArray<String>类型上PopUpViewController一个新的变量。

之后,当你创建你的viewController时,你可以将它传递给控制器​​。之后,它只是PopUpViewController中的简单tableView实现来显示数据。

延伸PopUpViewControllerdata参数。

进口的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 
+0

感谢您的回复。啊,所以这个过程类似于发送数据的prepareForSegue方法吗? –

+1

是的,当然没有涉及黑魔法;) – dirtydanee

+0

经过测试,效果很好。谢谢你的帮助!现在更好地把干草叉... –

0

创建PopUpViewController便利的init像MainViewController以下

convenience init(nibName: String, arrayOfString: [String]){ 
    self.data = arrayOfString 
    self.init(nibName: nibName, bundle:nil) 
} 

然后调用方便的init你添加数据就像这样创建

// Create a custom view controller let PopUpVC = PopUpViewController("PopUpViewController", arrayOfString: ["String1", "String2"])

相关问题