做两个步骤 - 一个接一个

时间:2013-10-06 15:14:15

标签: objective-c loops sleep

我无法弄清楚如何做到这一点:

我有一个ImageView,然后点击我想在ImageView中显示的按钮:第一个图像,然后等待几秒钟,然后做一些while循环,找到第二个图像(按照while循环中的说明)从许多其他图像),然后显示所选的(第二)图像。

我不确定我是否已经非常清楚地描述了我的问题所以这里是示例代码:

- (IBAction)button:(id)sender {
  i=0;
  UIImage *img = [UIImage imageNamed:@"image1.png"];
                 [first setImage:img];
  /*some code which sets the time the image1 stay shown*/
  while (i<some_variable) {
  /*blah blah blah*/
  if (something) {UIImage *img = [UIImage imageNamed:@"image2.png"];
                 [first setImage:img];}
  if (something else) {UIImage *img = [UIImage imageNamed:@"image3.png"];
                 [first setImage:img];}
  ...
  /*code code code*/
  i++;
  }

}

这个问题没有解决我的问题:

[NSThread sleepForTimeInterval:1.0];

它只是等待空白然后处理代码并显示所选图像。

这应该是非常基本的东西,我想不出任何想法。

1 个答案:

答案 0 :(得分:0)

这解决了我的问题:

- (IBAction)button:(id)sender {

  UIImage *img = [UIImage imageNamed:@"image1.png"];
                 [first setImage:img];

  double delayInSeconds = 1.0; //set delay time
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
  i=0;
  while (i<some_variable) {
  /*blah blah blah*/
  if (something) {UIImage *img = [UIImage imageNamed:@"image2.png"];
                 [first setImage:img];}
  if (something else) {UIImage *img = [UIImage imageNamed:@"image3.png"];
                 [first setImage:img];}
  ...
  /*code code code*/
  i++;
  }
  });
}