菜鸟教程小白 发表于 2022-12-11 19:17:57

ios - 使用 XCode (Swift) 为学校和标签属性开发 iOS 应用程序不会刷新


                                            <p><p>我是一所学校的阅读老师(我不教编程),为有 LD 的学生服务。我们需要一个应用程序在设定的毫秒数内以随机顺序闪烁 20 个单词,然后在设定的毫秒数内使单词变黑,然后继续浏览 20 个单词的列表。 15 年前我涉足编程,但从未开发过应用程序。 </p>

<p>逻辑工作正常,但我知道有更好的方法来做到这一点 - 我现在没有时间学习所有的来龙去脉!我唯一的问题是标签在整个例程完成之前不会更新,所以没有文字显示。我已经尝试了这个网站上推荐的一堆不同的技术,但没有得到任何工作。是否有一个简单的解决方案 - 似乎 layoutIfNeeded 是一种推荐的技术,但我似乎无法正确实现。
任何帮助表示赞赏!</p>

<pre><code>@IBAction func cmdStart(_ sender: Any) {
   // the main logic

    self.view.layoutIfNeeded()


    var x = arc4random() % 20;
    var i:Int = Int(x)
    var num = 0

    while num &lt; 20 {
      num += 1
      self.lblDisplay.backgroundColor=UIColor.white

      while wordUsed == 1
      {
            x = (arc4random() % 20)
            i = Int(x)
      }

      // output
      print (&#34;word is \(wordList)&#34;)
      self.lblDisplay.text = wordList
      self.lblDisplay.backgroundColor=UIColor.white
      self.view.layoutIfNeeded()

      //delay based on slider
      let delTimeWord = (self.sldDelay.value)*1000
      usleep(useconds_t(delTimeWord))

      //blackOut duration based on slider
      let delTimeBlack = (self.sldVisible.value)*1000
      usleep(useconds_t(delTimeBlack))
      self.lblDisplay.backgroundColor = UIColor.black

      wordUsed=1
    }

}
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>在 iOS 应用程序中,您需要让“事件循环”运行。这是一个由操作系统运行的循环,用于检查输入事件、刷新屏幕并通常保持一切正常运行。如果您不让循环运行,那么应用程序会“锁定”并停止执行任何操作。</p>

<p>我假设由按钮触发的 <code>cmdStart</code> 方法本身是由事件循环调用的。与其在该方法中运行您自己的循环,您应该做的是让该方法设置一些状态,并可能启动一个稍后执行操作的计时器,然后返回以便事件循环可以继续运行。</p>

<p>因此,您当前在 <code>cmdStart</code> 中拥有的那些变量可能应该是 ViewController 的属性。不要调用 <code>usleep</code>,而是启动一个将在适当时间触发的计时器,然后在计时器处理程序中执行“下一步”的任何操作。</p>

<p>您无需调用 <code>layoutIfNeeded</code>。只需在处理程序方法中设置标签的文本和颜色,当它返回时,事件循环将负责更新屏幕,</p>

<p>抱歉,我无法提供完整的示例,但我建议您阅读有关 <code>NSTimer</code> 并查找示例。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 使用 XCode (Swift) 为学校和标签属性开发 iOS 应用程序不会刷新,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/42877041/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/42877041/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 使用 XCode (Swift) 为学校和标签属性开发 iOS 应用程序不会刷新