2016-12-30 9 views
0

github拡張子(https://github.com/Orderella/PopupDialog)を使用して私のカスタムPopUpViewControllerに情報を渡そうとしています。 Popupは、私がPopUpViewController(xibファイルを持つ)という名前のViewControllerを使用し、PopUpが開始されるView ControllerはMainViewControllerと呼ばれます。Swift:情報をポップアップ表示に渡す方法は?

PopUpViewControllerに渡される情報は、String型の配列(popUpArrayという名前)であり、table(名前は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

ジャストタイプArray<String>data呼ば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] = [] 

} 

あなたのinit利便性を呼び出すMainViewControllerに続いて

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

を次のようにPopUpViewControllerで便利なのinitを作成

// Create a custom view controller 
    let PopUpVC = PopUpViewController(nibName: "PopUpViewController", bundle: nil) 
// Assign the data 
    PopUpVC.data = popUpArray 
+0

お返事ありがとうございます。ああ、プロセスはデータを送信するprepareForSegueメソッドと似ていますか? –

+1

はい、もちろん、黒い魔法は関係ありません;) – dirtydanee

+0

それをテストし、それは完全に動作します。ご協力いただきありがとうございます!今はピッチホイールを遠くに置いてください... –

0

showCustomDialog()関数を呼び出すときにデータを追加します。ちょうどこのようなもののように作成された

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

関連する問題