在我的iOS應用程序中,我在其中一個視圖上有一個視圖控制器和一個UITableView子類。目前UITableView管理它自己的數據(創建連接,併成爲處理回調的委託)。我應該運行哪些類的異步調用?
我想知道這是否是最佳做法?在視圖控制器上運行它並將數據傳遞到表中是否更好?這完全不重要嗎?
請解釋除了回答我的問題之外的原因。
謝謝!
在我的iOS應用程序中,我在其中一個視圖上有一個視圖控制器和一個UITableView子類。目前UITableView管理它自己的數據(創建連接,併成爲處理回調的委託)。我應該運行哪些類的異步調用?
我想知道這是否是最佳做法?在視圖控制器上運行它並將數據傳遞到表中是否更好?這完全不重要嗎?
請解釋除了回答我的問題之外的原因。
謝謝!
在ViewController
中實施delegate
和dataSource
方法會更加標準。
對UI*View
類進行子類化很不尋常,除了要自定義繪圖。 UITableViewCell
對此規則有點例外。
如果你發現你的ViewController
有點大,你可能會考慮在一個單獨的類中實現委託和數據源。
除了mcfedr的回答,視圖是與用戶交互的東西,通常很好地分離概念(除非不可避免)。另請注意,歷史版本的ios(iirc)視圖控制器可能會按需加載/卸載視圖,因此其中的任何應用程序邏輯可能不再存在。
在這種情況下,我一般都只有一個類......包含以下視圖層次的UIViewController的實例:
通過這種方法,我會的UIViewController :
當主機的UIViewController是你UIViewContoller的委託和數據源,所有代碼可以存在於一個班級中。這可以讓你的項目代碼更緊密,但是卻能夠緊密結合你的邏輯。
另一種方法是繼承UITableView並實現UITableViewDelegate和UITableViewDatasource。這將是一個可取的辦法,如果:
這裏是思想過程中,我使用:
最佳做法是依賴於程序員的參與人數,UITableView中的重複性,編碼模式已經建立。這往往是一個偏好問題,我希望我的回答揭示了爲什麼你會去任何一種方式,
我一直在單獨的課上做這個的原因是因爲在一些頁面上我有兩個相鄰的桌面視圖並且委託調用需要不同。 – user3583341 2014-09-30 14:38:53
這將是繼承UITableView的另一個原因。您可以將UIViewController作爲多個UITableView的委託/數據源,但每種方法都必須執行條件邏輯,更重要的是,您將被迫在兩者中實現相同的方法,這可能會導致不理想的結果。爲了您的目的,我認爲您已經選擇了最佳做法。 – dgangsta 2014-09-30 15:47:52