解決你的一些問題。
MonoTouch.Dialog和UITableView之間的主要區別在於,前者可以「加載」所有要預先渲染的數據,然後將其遺忘。您讓MonoTouch.Dialog負責渲染它,推動視圖並照顧部分/元素。使用UITableView,您需要提供回調方法來返回節的數量,節的標題和數據本身。
UITableView的優勢在於,爲了呈現一百萬行具有相同大小和相同單元格的行,您不必真正加載所有數據,您可以等待被回調。話雖如此,如果你使用不同高度的單元格,這會很快破裂,因爲UITableView將不得不查詢所有行的大小。
因此,在短期:
(1)是的,即使你使用自定義的細胞,你會從更短的代碼和一個簡單的編程模型中受益。無論您是否使用其他功能,都取決於您。
(2)對於性能,問題歸結爲您將擁有多少行。就像我之前提到的那樣,如果您正在瀏覽可能較大的數據集,則必須先將所有這些單元格加載到內存中,或像TweetStation那樣添加功能以「按需」加載。
現實情況是,它會消耗更多的內存,因爲您需要在MonoTouch.Dialog中加載數據。你最好的優化技術是讓你的元素非常輕量。 Tweetstation例如使用「TweetElement」,僅將該ID保存到推文中,並根據需要加載實際內容,以將TweetElement的大小保持在記憶中非常小。
與UITableView,你不支付的價格。但是如果你沒有使用某種數據庫,數據仍然會在內存中。
如果您的應用程序要求數據存儲在內存中,那麼您還可以將數據移動爲元素並將其用作模型。
(3)這是一個有點草的人。您的數據「源」永遠不會獨立於UIKit。我知道人們喜歡談論這些模型是可重用的,但在實踐中,你永遠無法重用UITableViewSource作爲除UITableView之外的任何其他資源。它的主要用途是支持可伸縮控件,它不需要預先將數據加載到內存中,而不是將模型從視圖中分離出來。
因此,您真正擁有的是將UITableView的世界與實際數據模型(數據庫,XML列表,內存數組,Redis連接)橋接的適配器類。
使用UITableView,您的適配器代碼位於構造函數和UITableViewSource中。使用MonoTouch.Dialog,您的adatpro代碼位於將初始RootElement填充到DialogViewController的代碼中。
所以有理由在MonoTouch.Dialog上使用UITableView,但它不屬於這三個缺點。
我傾向於將它用於需要在表中進行數據輸入的情況。對於正常的僅顯示錶格,我繼續手動執行它們。 – Jason 2012-02-25 19:37:33