iOS開發思路提問(系列1:一個Button的三種狀態怎樣切換?)

來源:互聯網
上載者:User

標籤:style   http   os   io   使用   ar   資料   2014   問題   

問題抽象:

現在在做一個音樂播放的模組,對於音樂播放順序有三種狀態切換,如所示,

順序播放

單曲迴圈

全部隨機播放

現在我只抽象出最簡單的部分,以該Button操作的互動過程來描述,

(1)Button預設的狀態是“順序播放”歌曲模式

(2)不斷點擊Button,歌曲迴圈模式切換順序為“順序播放->單曲迴圈->全部隨機播放->順序播放->....”

(3)每次點擊設定了一種歌曲迴圈模式,都將該迴圈模式發送給伺服器,下次來到該介面的時候,從伺服器讀取資料,自動載入正確的模式,而不一定就是“順序播放”迴圈模式

相信這個簡單的情境,大家都非常明白。


解決方案

-----------------分割線----------------我自己的解決方案----------------如下---------------------------

我認為

(1)Button一共就三種狀態,所以定義了一個enum枚舉,代表了3中歌曲播放迴圈模式,

enum{    SoundPlayQueue,//順序播放    SoundPlaySingle,//單曲迴圈    SoundPlayRandom,//全部隨機播放};

(2)使用Button的tag屬性作為標識歌曲播放的狀態,statusFromServer作為從服務端讀取到的設定的歌曲播放狀態(它有三個值,分別是00-順序播放,01-單曲迴圈,02-全部隨機播放),那麼初次加入介面時候,就要對Button的tag進行賦值

- (void)viewDidLoad{    [super viewDidLoad];    int statusFromServer = [從服務端擷取的歌曲迴圈模式-有三個值(00,01,02)];    if(statusFromServer == 00)    {        playBtn.tag = SoundPlayQueue;        [playBtn setImage:順序播放圖片];    }    else if(statusFromServer == 01)    {        playBtn.tag = SoundPlaySingle;        [playBtn setImage:單曲循環圖表片];    }    else if(statusFromServer == 02)    {        playBtn.tag = SoundPlayRandom;        [playBtn setImage:全部隨機播放圖片];    }}

(3)點擊Button,添加Button點擊方法-playBtnClicked,切換歌曲迴圈模式,

- (void)playBtnClicked:(id)sender{    UIButton tempBtn = (UIButton *)sender;    if(tempBtn.tag == SoundPlayQueue)    {        //如果現在順序播放,那麼下一個模式設定為單曲迴圈,        tempBtn.tag = SoundPlaySingle;        [tempBtn setImage:單曲循環圖表片];        statusFromServer = 01;    }    else if(tempBtn.tag == SoundPlaySingle)    {        //如果現在單曲迴圈,那麼下一個模式設定為全部隨機播放,        tempBtn.tag = SoundPlayRandom;        [tempBtn setImage:全部隨機播放圖片];        statusFromServer = 02;    }    else if(tempBtn.tag == SoundPlayRandom)    {        //如果現在全部隨機播放,那麼下一個模式設定為順序播放,        tempBtn.tag = SoundPlayQueue;        [tempBtn setImage:順序播放圖片];        statusFromServer = 00;    }}

自我總結:

我用這種方式確實解決了問題,但是總感覺代碼過於累贅和不合理,

(1)最主要的一個問題就是Button作為一個UI控制項,它只是用於進行介面顯示和事件控制,但是我這邊卻用它的屬性來標識當前的歌曲迴圈模式,也就是說Button的所做的事情超過了它的業務範疇;

(2)其次就是這種方式,無疑增加了當前ViewController中的代碼,是的ViewController看起來雜亂


求助:

親愛的你,親愛的大神,能不能給我指點迷津,幫我最佳化代碼呢?希望給我指出一種思路就可以了,不需要詳細代碼,再次本碼農跪謝了。^^

iOS開發思路提問(系列1:一個Button的三種狀態怎樣切換?)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.