Swift:如何永远重复代码

时间:2016-01-19 00:54:12

标签: ios swift infinite-loop

我正在尝试构建一个简单的单一视图应用程序,该应用程序运行一系列图像的无限幻灯片放映,每次图像更改之间都有时间延迟。我为此写的代码如下。我试着把它放到viewDidLoad和viewDidAppear中,但屏幕仍然是空白的,我猜是因为函数永远不会因无限循环而结束。

我在iOS和tkinter之前学到了一点Python,你的代码会进入mainloop。但我不太确定如何在Swift中做同等效果 有人可以解释为什么我遇到这个问题以及如何在Swift中执行此操作。感谢。

var arrayimages: [UIImage] = [UIImage(named: "charizard")!,UIImage(named:"Flying_Iron_Man")!]

var x: Int = 0
var images: UIImage
let arraycount = arrayimages.count

repeat{
       images = arrayimages[(x % arraycount)]
       sleep(1)
       slideshow.image = images
       x++
    } while true

注意:幻灯片显示是图像视图插座。

2 个答案:

答案 0 :(得分:5)

您正在寻找NSTimer

let timer = NSTimer.scheduledTimerWithTimeInterval(
    1.0, target: self, selector: Selector("doYourTask"),
    userInfo: nil, repeats: true)

第一个参数是您希望计时器触发的频率,第二个参数是什么对象将被调用的选择器,第三个是选择器名称,第四个是您想要传递的任何额外信息计时器对象上的参数,第五个是这是否应该重复。

如果您想在以后任何时候停止代码:

timer.invalidate()

答案 1 :(得分:3)

创建重复的NSTimer:

var timer = NSTimer.scheduledTimerWithTimeInterval(2.0,
  target: self,
  selector: "animateFunction:",
  userInfo: nil,
  repeats: true)

然后编写一个函数animateFunction:

func animateFunction(timer: NSTimer)
{
  //Display the next image in your array, or loop back to the beginning
}