2016-12-30 2 views
0

Я пытаюсь передать информацию в свой пользовательский PopUpViewController, используя расширение github (https://github.com/Orderella/PopupDialog). Popup использует viewcontroller, который я назвал PopUpViewController (с xib-файлом), а контроллер представления, с которого инициируется PopUp, называется MainViewController.Swift: как передать информацию во всплывающее окно?

Информация, переданная PopUpViewController, будет представлять собой массив (с именем: popUpArray) типа String и использоваться для отображения содержащейся информации в таблице (named: 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

Просто объявить новую переменную на PopUpViewController под названием data с типом Array<String>.

После этого, когда вы создаете свой viewController, вы можете просто передать его контроллеру. После этого это просто простая реализация tableView в PopUpViewController для отображения данных.

Увеличить PopUpViewController с параметром data.

импорт 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 как следующий

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"])

Смежные вопросы