如何快速在 UIAlertView 中添加 UITableView
Posted
技术标签:
【中文标题】如何快速在 UIAlertView 中添加 UITableView【英文标题】:How to add UITableView in a UIAlertView in swift 【发布时间】:2016-01-29 06:26:35 【问题描述】:如何在 UIAlertView 中动态添加 UITableView。将 UIAlertView 的 subView 添加到 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()
【问题讨论】:
我没有在这里添加 let alertView = UIAlertView() ..但是我已经在我的代码中添加了..仍然无法正常工作 你不能这样做。只是为了在你的项目中添加按钮 首先,UIAlertView
在 ios 8 中已被弃用,因此您可能应该看看UIAlertController。其次,警报并非旨在包含自定义子视图(如 TableView)。考虑以模式显示您的表格,因为警报旨在允许用户从一些可用操作中进行选择。
【参考方案1】:
在 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")
【讨论】:
【参考方案2】:我不认为你可以用UIAlertView
做到这一点,但你可以制作一个小视图并以模态方式呈现它或类似UIPopoverPresentationController
【讨论】:
【参考方案3】:为了在应用程序的多个位置使用带有表格/图像或自定义按钮操作的警报类型行为,我创建了一个包含所有这些示例的示例项目 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
【讨论】:
以上是关于如何快速在 UIAlertView 中添加 UITableView的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iPhone 的 UIAlertView 中添加 UITableView?
如何在 Swift 中将 TextField 添加到 UIAlertView
如何在 UIAlertView iPhone 中添加 TextView 320*460
如何在 UIAlertView 的消息中添加可触摸的 Url 链接到 url?