2016-07-24 26 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

相關問題