2013-07-30 70 views
3

我試圖開發一個通用的iOS應用程序,理想情況下我試圖儘可能多地獲得代碼重用。iOS通用應用程序 - UITableView/UICollectionView

我正在使用故事板,因此UI被分割成場景。

在iPhone故事板中,特定的場景最適合用於表格視圖。 在iPad故事板中,故事板中的等效場景將理想地實現UICollectionView,並將內容呈現在網格中。

這兩個視圖都應該實現拉到刷新控制,在一種情況下,它將調用[UITableView reloadData],而在另一個視圖中將調用[UICollectionView reloadData]。

任何人有關如何獲得最大的代碼重用的意見,即。控制器類是什麼樣的?

1選項應該是有1個單片類符合UITableView協議和UICollectionView協議,但這種感覺不正確。

另一種選擇是擁有一個基類,然後爲其分配iPhone和iPad的專門知識。雖然這感覺更清潔,但我仍然認爲可能有更好的方法。在我的第一次嘗試中,感覺就像專業類中的代碼比基類中的更多。

我考慮的第三個計劃只是在兩個應用程序中使用UICollectionView,因此消除了控制器的複雜性。希望我可以強制收集視圖的佈局成爲iPad上的網格,同時告訴它模仿iPhone上的表格視圖。

雖然在它的表面上,這聽起來很容易我努力使UICollectionView工作完全像一個表視圖通常會做。

任何意見傢伙?

非常感謝,

CA.

+0

你決定要走哪條路? –

回答

0

當你在談論代碼重用時,你可能是指DRY principle。它只是說你不應該兩次寫同樣的代碼或相同的信息,但我不認爲這是你的主要問題。

我會在iPhone上使用UITableViewController,在iPad上使用。我認爲這是最簡單和最簡單的方法。你希望在兩個控制器之間重用什麼?這兩種方法都需要兩種不同的委託協議,所以大多數方法都只針對一個平臺。如果您使用的是核心數據,則需要兩個NSFetchedResultsController,但如果您在兩個平臺上都需要相同的數據,則重複使用獲取的結果控制器代碼纔有意義。

如果你在Xcode中創建一個新的通用項目,你會得到一個在iPhone和iPad上看起來不同的基本項目設置。在開始編程之前嘗試理解它(有些細節需要注意),我認爲它至少會回答你的一些問題。

+0

感謝您花時間回答。也許我正在努力實現的過於「純粹」。就我想避免重複的情況而言,兩個控制器都會有一個拉動來刷新控制 - 所以有一個處理程序。處理程序將本質上調用AFNetworking上的方法,以在兩種情況下返回完全相同的數據。它還會調用集合視圖或表視圖上的重裝。 –

+0

對不起,我原來的評論被縮短了,我很想知道我是否忽略了一些顯而易見的東西。在WPF中,控件基於層次結構,所以在這種情況下,您可能已經找到了一個通用的基類或接口,並對其進行了編碼。我知道代表是不同的,但他們如此密切相關,只是感覺不對。無論如何,它看起來像我沒有忽視任何事情,肯定有更大的問題需要擔心!再次感謝。 C。 –

2

如果您沒有使用某些特定的UITableView功能[1],使得UICollectionView看起來完全像一張表一樣簡單。我想我會去使用UICollectionView,因爲它將在未來提供更大的靈活性,您將不得不使用它。

相關問題