2012-08-28 66 views
1

根據在Cocoa Touch中大量應用的Model-View-Controller模式,UIViewControllers應該總是處理幕後具體UIView行爲的邏輯。UITableView的實現,遵循MVC模式

我很好奇蘋果如何實現它的UITableView類,同時保持符合這一理念。特別是因爲UITableView依次從UIScrollView和UIView繼承。

當你添加一個UITableView到你的一個類中時,它是否有一個UIViewController處理它在後臺行爲的方式?我知道一個UITableViewDelegate負責告訴表有多少行應該有,等等。但是它的內部工作呢?

回答

1

我會在這裏採取一個狂野的鏡頭,因爲我不知道我真的按照你的問題。當您添加UITableView時,您必須擁有與其關聯的控制器來控制其處理和呈現的方式。執行UITableViewDelegateUITableViewDatasourceUITableViewControllerUIViewController。如果你不這樣做,你無法控制它的功能。

+0

是的,我意識到這一點。我想我要問的是,誰做幾何計算,確定如何UITableView實際移動?誰負責實際調用委託方法?等等。這個責任是否屬於實際的UITableView類? –

+0

請記住,繪圖是在UIView類中的drawRect方法中完成的,所以它是視圖本身處理它們的繪製方式。因此,所有的佈局代碼都是視圖,控制器告訴它它將要繪製什麼,即數據,以及如何響應用戶操作。 – 8vius

+0

這不違反MVC的原則嗎?例如,不應該讓UIViewController告訴UITable何時調用它的委託UIViewController中的方法? –