【问题标题】:Using custom view in alert with Swift在 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

标签: ios swift uiview uinavigationcontroller uialertcontroller


【解决方案1】:

无法修改默认UIAlertController。但是您可以使用例如SDCAlertView。这基本上创建了自定义的UIAlertControllers,看起来与内置的完全一样,但您可以编辑内容视图。

示例(从自述文件中复制):

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
    • 是的,这是一个错字,我已经更新了代码。但无论如何,我相信提出的解决方案可以解释他的需要。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-05
    • 1970-01-01
    • 2014-06-10
    • 1970-01-01
    • 2012-12-18
    相关资源
    最近更新 更多