2016-07-24 49 views
0

我有大约20个按钮链接到allKeys。我想要turnRed按钮将其文本的颜色更改为红色。我尝试下面的代码:Swift iOS。当我尝试对一组按钮进行变异时程序崩溃

@IBOutlet var allKeys: [UIButton]! 


    @IBAction func turnRed(sender: UIButton) { 
     var i = allKeys.count 

     repeat { 
      allKeys[i].setTitleColor(UIColor.redColor(), forState: UIControlState.Normal) 
     i -= 1 
     } while i != -1 
    } 

当我按下按钮turnRed,我的程序崩溃和Xcode中跳转到的appDelegate文件,并强调与错误线程1的AppDelegate类:信号SIGABRT。

控制台说,“终止应用程序由于未捕获的异常“NSRangeException原因:NSArrayI objectAtIndex

回答

2

这里的问题是,你要设置的变量iallKeys.count,但由于在迅速启动零,二十元阵列实际上应该是allKeys[19]。因此,当环是在i = 20,它试图访问allKeys[20],其崩溃的应用程序。要解决这个

的一种方法是设置iallKeys.count - 1代替,但更好的方法是使用一个for-in循环而不是repeat

for key in allKeys { 
    key.setTitleColor(UIColor.redColor(), forState: UIControlState.Normal) 
} 

在Swift中有多种循环方式,您应该使用这些选项来获得优势。你可以找到苹果公司的文件控制流程here

+0

谢谢一帮人。 – BossGiveMeArrays

+0

@BossGiveMeArrays欢迎! – kabiroberai

相关问题