具有UIActivity指示符的UIAlert视图 - 仅显示活动一次

时间:2015-08-22 16:08:09

标签: ios swift uialertview uiactivityindicatorview

我的功能显示带有UIActivityIndictor

的警报视图
var alert = UIAlertView()

Class AlertWithSpinner: NSObject {

    class func alertSpinnerWithTitle (titleText: String, messageText: String){

        alert.title = titleText
        alert.message = messageText

        var alertSubView:UIView = UIView(frame: CGRectMake(83,-10,100,40))
        var loadingIndicator: UIActivityIndicatorView = UIActivityIndicatorView(frame: CGRectMake(50, 10, 37, 37)) as UIActivityIndicatorView
        loadingIndicator.center = alertSubView.center
        loadingIndicator.hidesWhenStopped = true
        loadingIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.Gray
        loadingIndicator.startAnimating();
        alertSubView.addSubview(loadingIndicator)
        alert.setValue(alertSubView, forKey: "accessoryView")
        loadingIndicator.startAnimating()

        alert.show()

    }

   class func dismiss(){

        alert.dismissWithClickedButtonIndex(-1, animated: true)

    }
 }

第一次发布警报很好。所有后续演示文稿都不会显示UIActivityIndicator,只显示UIAlert

3 个答案:

答案 0 :(得分:0)

您应该创建自己的警报,以防您想要修改它。来自Apple Docs

  

UIAlertView类旨在按原样使用,不支持子类化。此类的视图层次结构是私有的,不得修改。

答案 1 :(得分:0)

您正在重用UIAlertView,因此第一个UIActivityIndi​​catorView仍然是警报的子视图。 在设置UIAlertView的消息后,添加以下行以立即删除旧的UIActivityIndi​​catorView。

long long

答案 2 :(得分:0)

我认为实现这一目标的最佳方法是使用具有类似功能的外部库:

SVProgressHUD

MBProgressHUD