2016-11-30 64 views
2

我該如何解決這個問題?我是一個新的編碼器。謝謝錯誤:「不能分配給類型'Bool'的不可變表達式」?

我得到了如下錯誤:

"Cannot assign to immutable expression of type 'Bool'"

當我嘗試了「isSelected」設置爲falsetrue

@IBAction func onFilter(_ sender: Any) { 

    if ((sender as AnyObject).isSelected == true) { 

     hideSecondaryMenu() 
     (sender as AnyObject).isSelected = false 

    } else { 

     showSecondaryMenu() 
     (sender as AnyObject).isSelected = true 

    } 
} 

回答

2

因爲當你將發送您收到此錯誤到AnyObject你得到immutable類型的對象,所以你不能更新它的屬性,解決你的問題的最佳選擇是將您的發件人聲明從Any更改爲ac tual UIControl意味着如果它是按鈕然後UIButton

@IBAction func onFilter(_ sender: UIButton) { 
    hideSecondaryMenu() 
    sender.isSelected = !sender.isSelected 
} 

如果你想仍然使用Any然後轉換寄件人實際UIControl,這是屬於。

@IBAction func onFilter(_ sender: Any) { 
    if sender is UIButton { 
     let btn = sender as! UIButton 
     hideSecondaryMenu() 
     btn.isSelected = !btn.isSelected 
    } 
}  
相關問題