UIButton三狀態切換小技巧(可擴充套件至更多狀態)
之前寫專案的時候,一般對於UIButton的狀態的使用,最常見的就是點選後,把Button的selected的狀態進行非操作,讓它在兩個狀態之間來回切換,一般的需求也就是這樣,但是這次的專案中,遇到需要三種狀態切換的,用了個很次的方法處理,但是後期再處理其他專案的時候,突發奇想,其實三種狀態也可以做的到,不需要依賴於Button本身的狀態去考慮,一下就是對這個想法的分享,如果大家有更好的方法,也希望能夠回覆我,對我指點一下,謝謝大家。
話不多說,以按鈕有三個狀態來考慮,每次點選,自動從1切換到2,2切換到3,3切換到1,如此反覆,思路也簡單,取餘,直接上程式碼:
- (IBAction)orderStatusAction:(UIButton *)sender {
//讓索引值每次取餘3後再賦值給自身,這樣,就在一個0~2之間的範圍迴圈
self.statusIndex = (self.statusIndex + 1) % 3;
switch (self.statusIndex) {
case 0:
[self.orderStatusButton setTitle:@"狀態1" forState:UIControlStateNormal];
break;
case 1:
[self.orderStatusButton setTitle:@"狀態2" forState:UIControlStateNormal];
break;
default:
[self.orderStatusButton setTitle:@"狀態3" forState:UIControlStateNormal];
break;
}
}
這就是我的一點思路,我覺得挺好用的,如果需要更多狀態,可以取4、5、6...等數字的餘數,但是一般只用於三種狀態就好了,4種以上的狀態,我建議直接用列表選擇,會更有效率。
如有想法,歡迎分享,謝謝大家!
相關文章
- mobx-簡單可擴充套件的狀態管理庫套件
- UIButton基本狀態及各種疊加狀態詳解UI
- win10中word怎麼切換改寫狀態_win10怎樣切換插入狀態和改寫狀態Win10
- 工作流從無狀態切換到有狀態的好處
- Flutter | 狀態管理擴充篇——RxDart(四)FlutterDart
- Java執行緒狀態及切換Java執行緒
- Swift下如何疊加UIButton狀態SwiftUI
- [- Flutter 狀態篇 -] 主題色切換+國際化 三連Flutter
- [擴充套件] hieu-le active 判斷導航元素的 active 狀態套件
- (三)狀態模式模式
- 構建可擴充套件的有態服務套件
- 點選按鈕實現狀態切換效果
- Java執行緒生命週期與狀態切換Java執行緒
- Part 10: 任務項新增、修改和切換狀態
- 【演算法】狀態之美,TCP/IP狀態轉換探索演算法TCP
- 可動態擴充套件的資料庫模型設計套件資料庫模型
- 物理dataguard 正常切換 角色轉換,switchover_status 狀態改變
- LINUX netstat連線狀態解析及TCP狀態轉換LinuxTCP
- React專題:可變狀態React
- vmware_vmware Esxi無法在開機狀態擴充套件虛擬硬碟的問題套件硬碟
- 一個好用的檢視Angular應用ngrx狀態的Chrome擴充套件:Redux devToolsAngularChrome套件Reduxdev
- 程式的狀態與轉換
- 三高Mysql - 搭建“三高”架構之擴充套件與切換MySql架構套件
- MoE 系列(三)|使用 Istio 動態更新 Go 擴充套件配置Go套件
- 物理dataguard 正常切換 腳色轉換,switchover_status 狀態改變
- 處理物件的多種狀態及其相互轉換——狀態模式(五)物件模式
- 處理物件的多種狀態及其相互轉換——狀態模式(四)物件模式
- 處理物件的多種狀態及其相互轉換——狀態模式(一)物件模式
- Vim實戰手冊(2)常用的狀態切換按鍵
- 小程式全域性狀態管理
- 前端狀態管理與有限狀態機前端
- Azure Load Balancer : 動態擴充套件套件
- c# ExpandoObject動態擴充套件物件C#Object套件物件
- SSH框架之-hibernate 三種狀態的轉換框架
- HTTP協議(三):狀態碼HTTP協議
- 檢查Capital許可狀態API
- 可擴充套件性套件
- Java執行緒狀態轉換Java執行緒