2017年7月10日 星期一

swift3 Button單選功能

今天要來跟大家分享的是按鈕(Button)的單選效果。
參考來源http://www.cnblogs.com/luorende/p/5814597.html
有時我們可能會需要單選功能,譬如人數等等的。
而我這邊用簡單的方式製作單選功能,參考來源中作者是使用OC,而案件也是直接code寫

在此我使用storyboard來做這項功能。不多說直接附上成果圖跟code
先將storyboard做好後進行按鈕的@IBAction,注意這邊要將所有的Button拉致同一個action
並且給予tag(如下圖)
tag我個人這邊是設定101,102,103,104,105,不管怎樣不要是0且有區分即可

code方面需要寫for迴圈來判定所選到的是哪一個案件
而我的作法簡單一點,因為五個案件所以就0...4這樣就有五個值
然後因為tag我設定是101開始所以i + 101 這樣最多就是到105
做個簡單的switch來進行選到按鈕要做什麼動作或傳出什麼資料
而沒選到的另外定義一個Btn讓他取消選取,除非另外寫入限制(選到就將btn鎖定不能動作),但一般是不會去限制的。這就看個人需求了
isSelected這個Bool就是用戶是否有選取到,如果你不想用原生的也可在選到時改變自定義的選擇動作
 @IBAction func selectBtn_Single(_ sender: UIButton) {
        
        for i in 0...4  {
            if sender.tag == i + 101 {
                sender.isSelected = true
                var str:String!
                switch sender.tag {
                case 101:
                    str = ""
                case 102:
                    str = ""
                case 103:
                    str = "兔子"
                case 104:
                    str = "老鼠"
                default:
                    str = ""
                }
                singleLabel.text = "你喜歡的動物是:\(str!)"
                continue
            }
            let Btn:UIButton = self.view.viewWithTag(i + 101) as! UIButton
            Btn.isSelected = false
        }

    }

呈現出來結果如下圖
複選的寫法大致上如下(比較簡單一點),但不常使用
_ sender: UIButton
 if sender.isEnabled == true{
            sender.isEnabled = false
        }else{
            sender.isEnabled = true
        }
而更簡化的寫法就是
sender.isEnabled = !(sender.isEnabled)

希望能夠幫助到有需要的朋友^^