Ios 如何在swift的UIAlertView中添加UITableView

Ios 如何在swift的UIAlertView中添加UITableView,ios,swift,uitableview,uialertview,Ios,Swift,Uitableview,Uialertview,如何在UIAlertView中动态添加UITableView。将UIAlertView的子视图添加到UITableView后,它不会显示 override func viewDidLoad() { super.viewDidLoad() tableView.frame = CGRectMake(0, 50, 320, 200); tableView.delegate = self tableView.dataSource

如何在UIAlertView中动态添加UITableView。将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()
}

我不认为您可以使用
UIAlertView
,但是您可以创建一个小视图并以模式方式显示它,或者类似于
UIPopoverPresentationController
的方式在Swift中创建UITableView:

  • 创建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/按钮,并按如下方式调用

    if let vc = self.storyboard?.instantiateViewController(withIdentifier: "TableContentViewController") as? TableContentViewController{
                vc.modalPresentationStyle = .overCurrentContext
                 vc.popOverDelegate = self
                self.present(vc, animated: false, completion: nil)
            }
    
    更多信息请访问链接

    我没有在这里添加let alertView=UIAlertView()。但我已经在代码中添加了。。仍然不起作用。您不能这样做。只是为了在您的项目和添加按钮中首先,
    UIAlertView
    在iOS 8中被弃用,所以您可能应该看看。其次,警报并不是为了包含自定义子视图(如TableView)而设计的。考虑将您的表呈现在一个模态中,因为警报被设计为允许用户从一些可用的动作中做出选择。