【问题标题】:Exit from void method if action done如果操作完成,则退出 void 方法
【发布时间】:2014-07-04 07:33:46
【问题描述】:

在我的程序中,我使用了void 方法,我想在按钮操作完成后停止此操作。

viewDidLoad

[self runningaction];

在 viewDidLoad 之外

-(void)runningaction
{
    some code 
}

UIButton操作的另一种方法

-(void)clicktosee
{
    //here  i need to write code for stop the -(void)runningaction
}

提前致谢。

【问题讨论】:

  • 跑步时做什么? - 您是否在另一个线程或调度队列上启动任务? viewDidLoad 只会在视图加载时被调用一次,所以runningAction 只会被调用一次
  • 在运行中是为按钮显示 2 个背景图像。永远都是这样。 clicktosee 完成后,我需要更改按钮 backgroundimgae。明白了
  • 所以你要在-(void)runningaction 中开始动画?请记住,如果您将while(1) { //something }(或类似名称)放在那里,该功能将永远不会结束。

标签: ios objective-c void


【解决方案1】:

检查方法是否已实现,然后返回我尝试过的方法

-(void)clicktosee
{
  if( [self respondsToSelector:@selector(runningaction)] ) {
        return;
  }
}

【讨论】:

    【解决方案2】:

    好的,如果我正确理解了您的问题(和评论),您希望在按钮图像上启动一些动画,然后在用户操作时停止它们。

    可以这样实现:

    -(void)runningaction {
        myButton.imageView.animationImages =
            [NSArray arrayWithObjects:[UIImage imageNamed:@"image1.png"],
                          [UIImage imageNamed:@"image2.png"],
                          nil];
        myButton.imageView.animationDuration = 0.5; //whatever you want (in seconds)
        myButton.imageView.animationRepeatCount = 0; //0 means repeat forever here
        [myButton.imageView startAnimating];
     }
    

    然后在-(void)clicktosee 中简单地写下这一行:[myButton.imageView stopAnimating]

    希望我理解正确。

    注意:动画代码取自@ender 的answer

    【讨论】:

    • 我没有做任何动画,我只需要编写来更改背景图像。我可以用这个吗?
    • 是的 - 考虑一下动画是什么:它(最简单的)是一系列不断变化的图像。上面的代码将在两个图像之间每半秒交替一个按钮的背景图像。您当然可以提供更多图像、更改时间等。
    • 你能说得更具体点吗?
    猜你喜欢
    • 1970-01-01
    • 2013-07-13
    • 1970-01-01
    • 2014-02-07
    • 2013-03-24
    • 1970-01-01
    • 2019-05-27
    • 2011-09-07
    相关资源
    最近更新 更多