簡體   English   中英

在UIScrollView中的何處添加子視圖

[英]Where to add subviews in UIScrollView

是否有一些“最佳實踐”方式將子視圖添加到UIScrollView

例如:

我有一個UIViewController ,它從服務器加載具有相應描述的圖像。 這些圖像+說明應添加到水平scrollView中。

加載數據時,我應該在UIView創建一個方法來處理這些問題,還是在UIViewController執行此操作更方便?

您的視圖控制器將是處理此問題的最合適的位置,因為控制器應將您的視圖(滾動視圖)連接到數據(圖像)。

如果滾動視圖的布局很簡單,則可以完全通過控制器來完成。 但是,如果布局復雜,則可能需要考慮將UIScrollView子類化並在那里處理一些布局(類似於UITableView工作原理)。

有關標准應用程序體系結構的更多信息,請閱讀Apple開發人員網站上的Objective-C編程中的概念

從我的角度來看,關注點分離會像這樣分解:

  • UIViewController負責獲取圖像並將其交給UIView
  • UIView負責顯示它們。

因此, -addSubview:是視圖實現的詳細信息,應放入視圖中,並且對於控制器不透明。

有很多觀點認為, UIViewControllerUIView兩者都被混淆和交織在一起,從而使它們都成為概念性“視圖”的一部分(從MVC的角度來看),但是我認為這種方式仍然更加干凈。

如您所見,意見不同。 :)就我個人而言,我對MVC感到絕望,並認為Model-View-ViewModel是一種更清晰,更清潔,更明智的方法。

除了用於顯示圖像及其描述之外,UICollectionView與UITableView相同。

這是您可以做的。

  1. 創建一個UICollectionView,它是UIScrollView的子類。 因此,不需要UIScrollview。
  2. 由於每個項目都需要圖像和描述,因此建議從UICollectionView刪除UICollectionViewItem。
  3. 創建一個單獨的自定義UICollectinViewItem類,在.xib文件(UIImageVIew和UILabel)中定義UICollectionItem。
  4. 當您定義數據源方法“ – collectionView:cellForItemAtIndexPath:”時,請在此處定義UICollectionVIewItem類。 確實,我們定義了自定義UITableVIewCell。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM