Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
swift UIActivityIndicatorView.hidden=false不工作_Swift_Xcode6_Uiactivityindicatorview_Xcode6 Beta7 - Fatal编程技术网

swift UIActivityIndicatorView.hidden=false不工作

swift UIActivityIndicatorView.hidden=false不工作,swift,xcode6,uiactivityindicatorview,xcode6-beta7,Swift,Xcode6,Uiactivityindicatorview,Xcode6 Beta7,我试图在按下按钮后显示活动指示器视图,但它不想显示。如果我根本没有将其设置为隐藏,它会显示,当我尝试隐藏它时,它会隐藏。但如果它被隐藏,它将不会再次显示 代码如下: override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. loading.hidden = true } @IBAction func submit() {

我试图在按下按钮后显示活动指示器视图,但它不想显示。如果我根本没有将其设置为隐藏,它会显示,当我尝试隐藏它时,它会隐藏。但如果它被隐藏,它将不会再次显示

代码如下:

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.
    loading.hidden = true
}

@IBAction func submit() {
    loading.hidden = false
    loading.startAnimating()
    if chosenCategory == "" || txtName.text == "" || txtEmail.text == ""    {
        loading.stopAnimating()
        loading.hidden = true
    } else {
        println("animation")
不管怎样,“停止”动画都可以工作,它可以隐藏,但不管我做什么,它似乎只是跳过了
load.hidden=false
,直接将消息打印出来

可能发生什么情况?

使用GCD(中央大调度)例程:

    self.activityIndicator.startAnimating()
    self.activityIndicator.hidden = false

    dispatch_after(DISPATCH_TIME_NOW, dispatch_get_main_queue(), { ()->() in
        ... // your long running code here

        self.activityIndicator.stopAnimating()
    })

我建议不要使用.hidden属性。改为使用.hidesWhenStopped属性,并将其设置为true。然后只需调用.startAnimating()方法,UIActivityIndicatorView就会自动显示并设置动画。调用.stopAnimating()方法,UIActivityIndicatorView将自动隐藏

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.
    loading.hidesWhenStopped = true //this is all you need to change
}

@IBAction func submit() {
    loading.startAnimating() // becomes visible
    if chosenCategory == "" || txtName.text == "" || txtEmail.text == ""    {
        loading.stopAnimating() // goes into hiding
    } else {
        println("animation")

这里没有等待——同一个函数中的每一行,除非您使用的是sleep()或某种异步调用,否则都会立即一行接一行地执行。这与加载不同。将调用startAnimating(),事情将暂停,然后一段时间后,其他事情将发生。它们几乎会在瞬间一个接一个地发生。为我们展示更多的上下文代码。不,还有等待,
是其他代码要去的地方。它调用服务器,并且有一段等待时间(请求)。然后我甚至用不同的方法尝试了它们,向我们展示了其余的代码——否则就帮不了你。有很多代码,超过200行。但我会尝试发布相关内容…当点击submit时,如果if语句为true,您将立即隐藏加载。人们确实希望提供帮助,但您需要提供足够的信息。我认为,如果我将hidesWhenStopped设置为YES,则切换隐藏属性与启动/停止动画设置()相同。。。但我错了。使用start/stopAnimating()效果很好。这实际上是正确的答案,
hidden
属性根本不适用于
UIActivityIndicatorView
。我很沮丧,人们在这里回答问题时甚至没有测试过手头的问题。