1. 本節課將為您演示,如何在表格中嵌入另一個表格,從而創建更加強大的布局效果。首先在項目文件夾上點擊鼠標右鍵,彈出右鍵菜單。
2. 在彈出的右鍵菜單中,選擇創建新文件選項。我們將創建一個自定義的單元格,在此單元格中添加另一個表格,作為單元格的子元素。
3. 在彈出的文件模板選擇窗口中,保持默認的選項,然后點擊下一步按鈕,進入下一步設置頁面。
6. 保持默認的文件存儲位置 ,點擊創建按鈕,完成文件的創建。
9. 接著添加兩個屬性,一個是表格對象,另一個作為表格的數據來源。
10. 然后重寫單元格的初始化方法,在該方法中對單元格進行自定義操作。
13. 設置表格對象的數據源和代理,為當前的視圖控制器對象。
14. 接著設置不允許內部表格的滾動,只允許單元格所屬表格可以進行滾動。
16. 添加一個代理方法,用來設置表格的行數,在此設置表格的行數,與數組的長度保持一致。
18. 創建一個字符串常量,作為單元格的復用標識,然后根據復用標識,從表格中獲取可以復用的單元格。
19. 如果沒有可以復用的單元格,則初始化一個默認樣式的單元格,并設置單元格的復用標識。
20. 從數組中獲得指定序號的字符串,作為單元格的標題文字。
24. 接著創建一個類方法,用來根據字符串的長度,計算單元格的高度。
27. 通過將顯示區域的高度,減去文字至基線的距離,獲得文字的高度。將顯示區域的寬度,除以每行文字的寬度200,獲得文字的行數。兩者相乘得到總的高度。
29. 首先根據單元格的序號,獲得該單元格將要顯示的字符串。
30. 接著根據剛剛創建的類方法,計算單元格容納該字符串所需的高度。
31. 然后進行臨界判斷,從而將高度數值保持在一個合理的范圍之內。
32. 添加一個方法,用來設置表格的數據源。該方法將在外部的表格中被調用。
33. 設置自定義單元格的數組屬性,作為該單元格的表格的數據源。
34. 接著計算單元格內部的表格的高度,首先初始化一個浮點常量。
35. 然后創建一個循環,遍歷表格的數據源。通過對每個單元格的高度進行累計,合計整個表格的高度。
37. 繼續添加一個方法,用來獲得單元格內部表格的高度數值。
38. 最后添加一個必須實現的初始化方法。然后在左側的項目導航區,打開視圖控制器的代碼文件。
39. 現在開始創建處于外部的表格視圖,并在表格中使用剛剛自定義的包含表格的單元格。
40. 首先使當前的視圖控制器類,遵循表格視圖的數據源協議和代理協議。
46. 設置表格對象的數據源和代理,為當前的視圖控制器對象。
49. 添加一個代理方法,用來設置表格的行數,在此設置表格的行數為新聞標題數組長度的兩倍。偶數行用來顯示標題,奇數行用來顯示評論。
51. 創建兩個字符串常量,作為單元格的復用標識。第一個用于顯示新聞標題的偶數行單元格,另一個用于顯示新聞評論的奇數行的自定義單元格。
52. 接著創建兩個單元格對象,一個是系統默認樣式的單元格,另一個是包含子表格的自定義單元格。
54. 根據偶數行的復用標識,從表格中獲取可以復用的單元格。
55. 如果沒有可以復用的單元格,則初始化一個默認樣式的單元格,并設置單元格的復用標識。
61. 接著處理奇數行的單元格,首先根據奇數行的復用標識,從表格中獲取可以復用的單元格。
62. 如果沒有可以復用的單元格,則初始化一個包含子表格的自定義單元格,并設置單元格的復用標識。
64. 然后調用自定義單元格對象的,設置子表格的數據源的方法,在設置子表格數據源的同時,也使子表格的高度做到自適應。
71. 此處使用相同的方式,通過累加的方式計算子表格的高度。
72. 最后返回該高度的數值與20的和,避免單元格中的文字過于擁擠。接著點擊左上角的[編譯并運行]按鈕,啟動模擬器預覽項目。
73. 在彈出的模擬器中,觀察表中表的排版效果。最后點擊此處的[停止]按鈕,關閉模擬器,并結束本節課程。
本文整理自:《app開發中的神兵利器》,真正的[手把手]教學模式,用最快的速度上手iOS開發,蘋果商店App Store免費下載:https://itunes.apple.com/cn/app/id1209739676,或掃描本頁底部的二維碼。課程配套素材下載地址:資料下載