(1.概述部分)《列表視圖編程指南》(Table View Programming Guide for iOS)

關(guān)于iOS應(yīng)用中的列表視圖

列表視圖集多種功能于一身,經(jīng)常能夠在iOS應(yīng)用中見到。列表視圖通過一個可滾動的,含有多行(row)的清單來展現(xiàn)數(shù)據(jù),同時這個清單也可以被劃分為多節(jié)(section)。

列表視圖有許多功用:

  • 允許用戶在具有層級結(jié)構(gòu)的數(shù)據(jù)中進行導(dǎo)航

  • 展示一組具有索引的條目

  • 利用多個具有明顯視覺區(qū)別的組,展示詳細信息和控件

  • 展示一組可繼續(xù)選擇的選項

列表視圖只有一列,并且只允許垂直滾動。節(jié)有行組成(一個或多個)。每節(jié)可以擁有一個題頭(header)和一個注腳(footer),可以顯示文字或圖片。然而,許多列表視圖只有一節(jié),沒有可見的題頭或注腳。在代碼中,UIKit框架通過索引來識別特定的行和節(jié)。節(jié)的編號,由上至下,從0開始,一直到n - 1(n是列表視圖中節(jié)的數(shù)量),在每個節(jié)中行的編號也是由上至下,從0開始一直到n - 1(n是一個節(jié)中行的數(shù)量)。列表視圖還可以擁有自己的題頭和注腳,這點和節(jié)是相互獨立的;列表的題頭在第一節(jié)第一行的上方顯示,列表的注腳在最后一節(jié)最后一行的下方顯示。

概覽

列表視圖是UITableView類的實例對象,具有兩種基本風(fēng)格可選,plain(平實)或grouped(聚合)。平實風(fēng)格的列表視圖是類似于一個完整的清單形式;聚合風(fēng)格的列表視圖的節(jié)與節(jié)之間有著明顯的視覺分割。列表視圖還會有一個數(shù)據(jù)源,還可能有自己的代理對象。數(shù)據(jù)源對象為其各節(jié)各行提供所需顯示的數(shù)據(jù)。代理對象可以定制列表視圖的外觀和行為。

相關(guān)章節(jié):列表視圖風(fēng)格和附件視圖

列表視圖利用單元格繪制行

列表視圖利用單元格繪制行——單元格就是UITableViewCell對象。單元格是視圖,可以顯示文字,圖像或其他內(nèi)容。它們在被選中和未被選中時會有不同的背景。單元格還可以有附件視圖,附件視圖的功能是作為選中或設(shè)置的提示控件。

UIKit框架定義了4種標(biāo)準(zhǔn)的單元格風(fēng)格,每個單元格中都有三個默認內(nèi)容:主文本標(biāo)簽,細節(jié)文本標(biāo)簽,圖像,這四種風(fēng)格中它們的布局不盡相同。也可以定義自己的單元格,從而讓列表視圖擁有與眾不同的顯示效果。

當(dāng)在故事面板編輯器中設(shè)置列表視圖的特性時,要在兩種單元格內(nèi)容類中進行選擇:static cells(靜態(tài)單元格)或dynamic prototypes(動態(tài)原型)。

  • 靜態(tài)單元格。使用靜態(tài)單元格來設(shè)計擁有固定行數(shù)的列表,每一行都擁有自己的布局。如果在設(shè)計指出就對列表的整個外觀有明確的概念,那么就使用靜態(tài)單元格,不管它看是的信息內(nèi)容是什么。

  • 動態(tài)原型。使用動態(tài)原型設(shè)計一個單元格,然后將其作為列表中其他單元格的模版。當(dāng)列表中多個單元格都使用一種布局顯示信息時,使用動態(tài)原型。動態(tài)原型的內(nèi)容在運行時由數(shù)據(jù)源提供,單元格數(shù)量不限。

相關(guān)章節(jié):列表視圖風(fēng)格和附件視圖窺探單元格

響應(yīng)被選中的行

當(dāng)用戶選擇一行(通過點擊),列表視圖的代理會收到相關(guān)消息。被選中的行和節(jié)的索引會被傳遞給代理。代理使用這些信息在擁有的數(shù)據(jù)結(jié)構(gòu)(數(shù)據(jù)源)中找到相應(yīng)的條目。這個條目在數(shù)據(jù)結(jié)構(gòu)中可能處于中間位置,或者只是數(shù)據(jù)結(jié)構(gòu)的節(jié)點之一。如果條目處于中間位置,應(yīng)用會繼續(xù)顯示一個新的列表視圖。如果條目是一個節(jié)點,應(yīng)用會利用聚合風(fēng)格的列表視圖或其他類型的視圖來顯示被選中條目的細節(jié)信息。

在羅列出一組選項的列表視圖中,單擊行會選中其所關(guān)聯(lián)的選項。沒有信息會被顯示。

相關(guān)章節(jié):利用列表視圖導(dǎo)航數(shù)據(jù)結(jié)構(gòu)管理對行的選中

在編輯模式下添加,刪除,和對行進行排序

列表視圖可以進入編輯模式,此時用戶可以插入,刪除,或移動行在列表中的位置。在編輯模式下,綠色加號代碼添加行,行左側(cè)末尾的紅色建好代碼刪除行。如果用戶點擊刪除控件,或者在某些列表中橫向滑動行,會顯示出一個紅色的刪除按鈕,提示用戶刪除行。可以利用每一行右側(cè)末尾的一個由多條橫線組成的圖片來對行進行排序。一旦推出編輯模式,添加,刪除和排序的控件都會消失。

當(dāng)用戶視圖添加,刪除或?qū)π信判驎r,列表視圖會向其數(shù)據(jù)源和代理發(fā)送一個消息序列,以便它們可以應(yīng)對這些操作。

相關(guān)章節(jié):添加和刪除行與節(jié)管理行的排序

使用故事面板創(chuàng)建列表視圖

最簡單和最受推薦的創(chuàng)建和管理列表視圖的方法是在故事面板中使用自定義的UITableViewController對象。如果應(yīng)用的大部分顯示工作都是基于列表視圖,那么使用Xcode中的Master-Detail模版創(chuàng)建項目。這個模版包含了一個簡單的自定義UITableViewController對象,以及一個用來展示交互界面的故事面板,其中包括自定義的視圖控制器和其列表視圖。在故事面板編輯器中,為列表視圖選擇一個風(fēng)格,然后設(shè)計它的內(nèi)容。

在運行時,UITableViewController會創(chuàng)建列表視圖,為其分配代理和數(shù)據(jù)源。一旦被創(chuàng)建,列表視圖會向其數(shù)據(jù)源請求節(jié)的數(shù)量,每節(jié)中行的數(shù)量,以及用來繪制行的單元格。數(shù)據(jù)源管理著用來填充列表視圖行和節(jié)的數(shù)據(jù)。

相關(guān)章節(jié):利用列表視圖在數(shù)據(jù)結(jié)構(gòu)中導(dǎo)航創(chuàng)建和配置列表視圖

閱讀前提

在閱讀本文檔之前,讀者應(yīng)該先閱讀Start Developing iOS Apps Today,以便對iOS應(yīng)用開發(fā)的過程有初步的了解。然后閱讀View Controller Programming Guide以便對視圖控制器和故事面板有完整的了解。最后,為了能夠在使用使用列表視圖方面有上手經(jīng)驗,請閱讀教程Your Second iOS App: Storyboards

本介紹中的信息以及列表視圖風(fēng)格和附件視圖中的信息是對列表視圖在*** iOS Human Interface Guidelines***中的相關(guān)信息的總結(jié)。讀者可以在本文檔的后續(xù)章節(jié)中找到完整的關(guān)于列表視圖風(fēng)格,特性,使用方法的信息。

相關(guān)拓展

在以下示例代碼中可以找到列表視圖的相關(guān)實現(xiàn)代碼:

  • SimpleDrillDown
  • Table View Animations and Gestures

關(guān)于如何使用UIKit中提供的標(biāo)準(zhǔn)容器視圖的信息,詳見View Controller Catalog for iOS。本文檔提到了分頁控制器和導(dǎo)航控制器,都可以將列表視圖作為自己的子視圖。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容