2012-05-26 39 views
1

我在這裏使用簡單的英語。我有這個偉大的應用程序與多個選項卡和每個選項卡(UIViewController的子類)都有它的東西。其中一個選項卡內有一個按鈕(除其他外),並具有許多功能。 按鈕是相當(UIGlossyButton的子類,我在網上找到),並顯示一個麥克風 如果你按下按鈕,它(的標籤)記錄你的聲音,並自動停止(通過檢測的音量/超時)iOS MVC這是一個視圖還是一個控制器?

  • 在錄製過程中,標籤控制器顯示按鈕上方的LED儀表
  • 記錄後,按鈕與anthor按鈕表示揚聲器
  • 攻揚聲器換出播放你的聲音
  • 滑動操作跨越揚聲器可讓您「刪除」重置回麥克風

這個「小部件」是偉大的,我喜歡它。現在我想把這個東西放在其他標籤裏,而不是穿過應用程序。這看起來像抽象的候選人而不是複製/粘貼。

什麼殺了我的是:我應該打包在一起,所有這些功能(邏輯顯示/隱藏/交換按鈕,錄製聲音,分析聲級)成widget?如果是這樣,我應該使用多少類,每個子類應該使用哪些類?最後,在界面構建器中,我應該將該對象拖放到選項卡中的故事板上,並且我應該在「自定義類」框中鍵入哪些類。

回答

3

聽起來很像單個UIView子類要做的事情。我絕對會把它分成一系列的類,或者至少在擴展的UIGlossyButton和一個關聯的UIViewController之間。

該按鈕的責任應該是:能夠繪製自己,知道它何時被按下,以及在對其執行操作時執行最小邏輯(如將消息發送到UIViewController)。

將按鈕本身想象爲MVC的視圖。然後,控制器將真正知道如何處理實際UI背後的所有智慧。然後,諸如聲音計或語音文件之類的東西可選地應該被表示爲模型對象/類。有時我發現在iOS中創建顯式的Model類是過度殺毒,所以我只是使用普通的Cocoa類,比如帶有多態性的NSDictionary來處理來自控制器的模型。

+0

聽起來不錯。所以在界面生成器中,我應該在故事板上放置哪個對象來表示我的小部件?我不能使用視圖控制器,因爲我不能把它放在另一個視圖中。按鈕似乎有點奇怪,因爲IB顯示所有這些參數,但我只使用標題並忽略其他所有內容。 –

+0

如果這是: * RecordButtonController子類的UIView,但投入IB作爲一個UIButton * RecordButtonView子類的UIView和/有/一UIGlossyButton和LED儀表 * RecordModel子類NSObject的 –

+0

的UIButton是UIView的一個子類,它也增加了與按鈕相關的行爲。聽起來像你的結構應該是這樣的: RecordButtonController:子類UIViewController,具有用於UIGlossyVutton的IBOutlet屬性,也具有引用RecordButtonView的屬性RecordButtonView:子類UIView,應該被指定爲RecordButtonController的「視圖」。 RecordModel子類NSObject 這一切聽起來都對我很正確。忘掉所有你忽略的IB參數,如果你需要它們,它們就在那裏。不使用它們不會造成傷害。 –

相關問題