如何在 swift iOS 中的 UIAlertcontroller 中显示 UITableview?

Posted

技术标签:

【中文标题】如何在 swift iOS 中的 UIAlertcontroller 中显示 UITableview?【英文标题】:how to show UITableview in UIAlertcontroller in swift iOS? 【发布时间】:2016-08-10 05:28:16 【问题描述】:

我对 swift 编码非常陌生,所以我想知道有什么方法可以使用 swift 在 alertcontroller 中显示 tableview。

【问题讨论】:

您的要求是什么? 看到一次***.com/questions/20737426/… 谢谢,我可以显示 tableview 但如何在单击 tableview 单元格时关闭相同的 uialertcontroller? 【参考方案1】:
var alrController = UIAlertController(title: "\n\n\n\n\n\n", message: nil, preferredStyle: UIAlertControllerStyle.ActionSheet)

let margin:CGFloat = 8.0
let rect = CGRectMake(margin, margin, alrController.view.bounds.size.width - margin * 4.0, 100.0)
var tableView = UITableView(frame: rect)
tableView.delegate = self
tableView.dataSource = self
tableView.backgroundColor = UIColor.greenColor()
alrController.view.addSubview(tableView)

let somethingAction = UIAlertAction(title: "Something", style: UIAlertActionStyle.Default, handler: (alert: UIAlertAction!) in println("something"))

let cancelAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel, handler: (alert: UIAlertAction!) in println("cancel"))

alrController.addAction(somethingAction)
alrController.addAction(cancelAction)

self.presentViewController(alrController, animated: true, completion:)

【讨论】:

如果你能解释一下你的代码做了什么,那么它实际上可以节省一些时间。谢谢。 :)【参考方案2】:
private var alertController = UIAlertController()
private var tblView = UITableView()
private func setupCitySelectionAlert() 
    
    let alertVC = UIViewController.init()
    let rect = CGRect(x: 0.0, y: 0.0, width: 300.0, height: 300.0)
    alertVC.preferredContentSize = rect.size
    
    tblView = UITableView(frame: rect)
    tblView.delegate = self;
    tblView.dataSource = self;
    tblView.tableFooterView = UIView(frame: .zero)
    tblView.separatorStyle = .singleLine
    alertVC.view.addSubview(tblView)
    alertVC.view.bringSubviewToFront(tblView)
    alertVC.view.isUserInteractionEnabled = true
    tblView.isUserInteractionEnabled = true
    tblView.allowsSelection = true
    
    self.alertController = UIAlertController(title: "Title", message: nil, preferredStyle: .alert)
    alertController.setValue(alertVC, forKey: "contentViewController")
    
    let cancelAction = UIAlertAction(title: "Cancel", style: .default, handler: nil)
    
    alertController.addAction(cancelAction)
    self.present(alertController, animated: true, completion: nil)

【讨论】:

以上是关于如何在 swift iOS 中的 UIAlertcontroller 中显示 UITableview?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中的 Realm.io 中做抽象实体

如何在 swift iOS 中的 UIAlertcontroller 中显示 UITableview?

如何在ios,swift中更新子控制器中的数据

如何在 UIScrollView iOS/Swift 中的控件页面之间水平滚动

ios - 如何使用ios swift中的自动布局以编程方式将两个标签并排放置在中心位置?

如何在SWIFT3 XCODE 8.2中的IOS应用程序中的Snackbar的操作中显示特定视图