Как добавить 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:
Создайте класс UITableViewController.
Заполните его делегаты (количество строк,didSelect,cellForRowAtIndexPath и т. Д.) Необходимым кодом.
Теперь вызовите экземпляр этого в
AlertViewController
,Передайте необходимые данные в TableView (например, количество строк и массив содержимого).
Добавьте экземпляр 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