在 Swift 的警报中使用自定义视图
Posted
技术标签:
【中文标题】在 Swift 的警报中使用自定义视图【英文标题】:Using custom view in alert with Swift 【发布时间】:2016-07-11 20:29:55 【问题描述】:如何制作包含 uitableview 的自定义视图的 alert?
应该在后台到处禁用 UserInteraction。一旦选择了一行,警报窗口就会消失。
let popup : PopupVC = self.storyboard?.instantiateViewControllerWithIdentifier("PopupVC") as! PopupVC
let navigationController = UINavigationController(rootViewController: popup)
navigationController.modalPresentationStyle = UIModalPresentationStyle.OverCurrentContext
self.presentViewController(navigationController, animated: true, completion: nil)
这不会产生任何错误,但会显示不同的视图而没有交互。
【问题讨论】:
你能贴出你试过的代码吗? 我现在添加了,但问题是我不想实例化一个新的视图控制器,如果存在这样的东西,我希望能够将 uiAlertView 与我的自定义视图一起使用。 @RomanSausarnes 【参考方案1】:无法修改默认UIAlertController
。但是您可以使用例如SDCAlertView。这基本上创建了自定义的UIAlertController
s,看起来与内置的完全一样,但您可以编辑内容视图。
示例(从自述文件中复制):
let spinner = UIActivityIndicatorView(activityIndicatorStyle: .Gray)
spinner.translatesAutoresizingMaskIntoConstraints = false
spinner.startAnimating()
let alert = AlertController(title: "Title", message: "Please wait...")
alert.contentView.addSubview(spinner)
spinner.centerXAnchor.constraintEqualToAnchor(alert.contentView.centerXAnchor).active = true
spinner.topAnchor.constraintEqualToAnchor(alert.contentView.topAnchor).active = true
spinner.bottomAnchor.constraintEqualToAnchor(alert.contentView.bottomAnchor).active = true
alert.present()
您基本上可以将所有内容添加为alert.contentView
的子视图
【讨论】:
【参考方案2】:不,无法替换 UIAlertController
行为,但您可以扩展它:
extension UIAlertController
static func showCustomAlert()
static func showCustomAlert(data: [AnyObject])
在第一个函数中,您可以调用自定义视图控制器。并且在一秒钟内您可以将一些数据传递给它,例如当您的自定义视图控制器显示需要显示数据的表格视图时。
因此,当您需要显示警报时,您可以这样做:
UIAlertController.showCustomAlert()
请注意,static
关键字允许您在不创建 UIAlertController
实例的情况下调用函数。
【讨论】:
´UIAlertView´ 自 ios 8 起已弃用。您应该改用UIAlertController
。
是的,这是一个错字,我已经更新了代码。但无论如何,我相信提出的解决方案可以解释他的需要。以上是关于在 Swift 的警报中使用自定义视图的主要内容,如果未能解决你的问题,请参考以下文章