2012-06-08 22 views
0

我有一個視圖與表視圖。我已經創建了TableViewCells的子類,以表示我的模型的一個對象。這個自定義UITableViewCell有兩個按鈕來改變我的模型對象(它使+1實例變量)。自定義UITableViewCell捕獲UIElements通知的最佳做法

所以我覺得我應該如何架構所有這一切,我的選擇是:

-I把指針在自定義tableViewCell,當我從一個按鈕接收通知我機會單元和對象(我不喜歡這個解決方案,因爲一個視圖正在改變我的模型,不好重複使用這個單元那麼糟糕)

- 在單元類中創建一個UICustomTableViewCellDelegate協議和一個id<UICustomTableViewCellDelegate>的實例。當我收到來自UIElement的消息時,我會打電話給我的代表。該委託將指向普通視圖的UIViewController,該視圖擁有包含我的對象的所有實例的數組,並在此處更改模型。將單元格視圖更改爲。我認爲重用並不壞,但我將如何從ViewController數組中輕鬆識別和恢復我的對象?我覺得方法應該是:

-(void)customTableCellViewButtonPlusPressed:(CustomTableViewCell*) cell; 

- 製作一個的viewController的CustomTableViewCell與我的對象的引用。他將收到來自單元格的UIButton的消息,並更改cellView和模型的對象

最佳實踐是什麼?

回答

1

第三個解決方案是其中最MVC

  1. 你將有一個模型,使其重如能與所有的 功能和計算要對模型本身
  2. 控制器做到了是UICustomTableViewCell,這個類將讀取模型並在視圖上實現它,它也將從視圖中獲取事件並相應地更改模型
  3. 並且視圖將會是UICustomTableViewCell xib文件,它將包含單元格繪製和實現

該模型將在被包括內部UICustomTableViewCell一個「具有」關係 的UICustomViewCell類將能夠發送的繪圖功能的視圖,並相應地從視圖中接收事件和改變模型

+0

對我來說這似乎是一個很好的答案。只有一個問題:我的ViewCellController應該有一個對CellView的引用?我說因爲默認關係將是一個UIView類對象,當TableView將要求他的數據源委託中的一個TableViewCell時,它將足以投射視圖對象? (UITableViewCell *)cellViewController.view' – Jpellat

+1

nope,我會persent一個函數cellView會是這樣的 [cellViewController cellView] - (UITableViewCell *)cellView {UITableViewCell *)self.view; } 這樣你可以實現更好的視圖封裝,所以如果你以後改變了cellView的實現,你的ViewController根本就不需要改變,你只需要改變CellController中cellView的實現 –

+0

這是一個完美的解釋。謝謝我喜歡這個設計 – Jpellat

相關問題