Как добавить UITableView в UIAlertView в Swift

Как мне динамически добавить UITableView в UIAlertView. После добавления subView UIAlertView в UITableView он не отображается.

 override func viewDidLoad() {
    super.viewDidLoad()
    tableView.frame         =   CGRectMake(0, 50, 320, 200);
    tableView.delegate      =   self
    tableView.dataSource    =   self
    tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
}

@IBAction func textFieldCliked(sender: AnyObject) {
    alertView.message = "table view"
    alertView.addButtonWithTitle("Ok")
    alertView.addSubview(tableView)
    alertView.show()
}

2 ответа

Решение

Я не думаю, что вы можете сделать это с UIAlertView, но вы можете сделать небольшой просмотр и представить его модально или что-то вроде UIPopoverPresentationController

Чтобы создать UITableView в Swift:

  1. Создайте класс UITableViewController.

  2. Заполните его делегаты (количество строк,didSelect,cellForRowAtIndexPath и т. Д.) Необходимым кодом.

  3. Теперь вызовите экземпляр этого в AlertViewController,

  4. Передайте необходимые данные в TableView (например, количество строк и массив содержимого).

  5. Добавьте экземпляр TableView в ваше представление предупреждений.

мой фрагмент кода:

let alertController : UIAlertController = UIAlertController(title: "Select email ID", message: nil, preferredStyle: .Alert)
alertController.view.backgroundColor = UIColor.whiteColor()
alertController.view.layer.cornerRadius = 8.0

let contactNumVC = contactNumberTableViewController ()

contactNumVC.count = emailIDs.count

contactNumVC.numbersArray = emailIDs

contactNumVC.preferredContentSize = CGSizeMake(alertController.view.frame.width, (44 * CGFloat(emailIDs.count)))

alertController.setValue(contactNumVC, forKeyPath: "contentViewController")

Чтобы использовать поведение типа предупреждения с таблицей / изображением или настраиваемыми кнопками в нескольких местах приложения, я создал образец проекта Generic popover со всеми этими примерами. Это не использует делегат перехода. Этот проект также демонстрирует пользовательский шрифт и цвет, которые можно настроить в соответствии с темой вашего приложения.

создайте пользовательский tableview / imageview / buttons в раскадровке и вызовите следующим образом

if let vc = self.storyboard?.instantiateViewController(withIdentifier: "TableContentViewController") as? TableContentViewController{
            vc.modalPresentationStyle = .overCurrentContext
             vc.popOverDelegate = self
            self.present(vc, animated: false, completion: nil)
        }

Больше информации по ссылке https://github.com/shruezee/GenericPopovers

Другие вопросы по тегам