【问题标题】:Insert break / sleep after showing a hidden button显示隐藏按钮后插入中断/睡眠
【发布时间】:2023-03-31 16:55:01
【问题描述】:

我想显示一个按钮,然后我想显示 1 秒钟,然后视图控制器必须更改。 我已经尽力了。但是我把 sleep(1) 放在哪里并不重要; - 它总是做同样的事情。它等待 1 秒,然后在非常短的时间内显示按钮并切换到另一个视图控制器。

谁能帮忙?

我的代码:

[self.resultButton setTitle:category forState:UIControlStateNormal];
self.resultButton.hidden = NO;

sleep(1);

UIViewController *vc = [[UIViewController alloc] init];
vc = [self.storyboard instantiateViewControllerWithIdentifier:@"mapViewControllerID"];

[self presentModalViewController:vc animated:YES];

【问题讨论】:

  • 当你清楚地使用objective-c时,为什么这会被标记为swift

标签: ios swift hidden viewcontroller break


【解决方案1】:

使用 GCD 的 dispatch_after 来完成此操作。

[self.resultButton setTitle:category forState:UIControlStateNormal];
self.resultButton.hidden = NO;

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  UIViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"mapViewControllerID"];
  [self presentModalViewController:vc animated:YES];
});

您还应该注意,您编写的视图控制器分配创建了一个默认的UIViewController,然后立即丢弃该对象并从您的情节提要中分配一个视图控制器。

【讨论】:

    【解决方案2】:

    要实现这一点,您可以使用 NSTimer 在延迟一段时间后调用特定函数,然后在该函数中放入代码以显示新的视图控制器

    NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector:  Selector("showController"), userInfo: nil, repeats: false)
    
    func showController(){
    
        //present view controller here
    }
    

    【讨论】:

      【解决方案3】:

      我使用了dispatch_after(),就像它被描述的here

      【讨论】:

      • @ian-macdonald 的回答更快更准确。
      猜你喜欢
      • 1970-01-01
      • 2021-06-05
      • 1970-01-01
      • 1970-01-01
      • 2021-11-27
      • 2021-06-14
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      相关资源
      最近更新 更多