1、清單視圖TableView
用于在一個一維的清單中顯示資料的方法,是滾動條視圖的派生來;有動态和靜态兩種類型,也可以設定為plain和grouped兩種風格;通過data source和delegate來設定不同的顯示資料和表格屬性。
TableView的組成:清單頭table header,分段section,清單尾table footer;每一個section由一個section header、一個section footer和若幹個table cell組成,每個cell是一個UIView執行個體。
Cell的類型:包括基本、子标題、細節(左/右)等;
通常配合TableView Controller使用:一個UITableViewController的view成員即是一個TableView;步驟:(1)建立一個類繼承自UITableViewController;(2)向storyboard中拖入一個TableViewController,class改為剛剛建立的類;(3)在建立類中實作delegate和data source的方法,控制清單的類型和顯示資料。
靜态清單:直接在storyboard中進行設計;表格在程式運作過程中不會動态加載,是以不需要實作delegate和data source方法;
在storyboard中可以可視化設定清單視圖cell的各種屬性,如下圖所示:

關鍵協定:data source和delegate;UIViewController自動将其delegate和data source設定為self,若向ViewController中手動添加一個tableView,則必須手動設定。
(1)delegate:控制清單的屬性、顯示的方式等;
選中某一行:
響應提示按鈕(i)
(2)data source:控制清單中顯示什麼資料;
指定顯示的cell:
指定分段的數目(預設為1):
指定每個section的cell個數:
關于UITableView
UITableView的segue方法:在清單中的某一進制素被點選後,如何跳轉到下一個頁面;
重新整理滾輪:首先在UITableViewController中将refreshing從disabled改為enabled,并ctrl+拖入視圖控制器中作為IBAction,在生産的函數中按需調用beginRefreshing和endRefreshing方法。
重新載入資料:調用reloadData在model發生變化的時候将其重新載入;調用reloadRowsAtIndexPaths:重新載入部分資料;
2、通用工程:可以适用于iPhone和iPad的應用
單一的應用,采用了兩個storyboard,是以可以自适應與兩種不同裝置;
iPad界面的風格:Split View和Popover;
如何檢測目前裝置?
(1)采用以下方法:
(2)檢測是否存在split view或者popover,或者檢測目前界面是否存在其他MVC。
UISplitViewController:由一個Master View Controller和一個Detailed View Controller構成;應處于一個storyboard的頂層,其内部可以添加navigation controller或tabbar controller。
擷取Master View Controller和一個Detailed View Controller的方法:
UISplitViewController中的每一個視圖控制器均存在一個屬性指向UISplitViewController對象:
UISplitViewController對象中存在一個NSArray儲存Master和Detailed視圖控制器,分别儲存于下标0和1位置;
在Master ViewController中選擇不同的選項後更新Detailed ViewController:Target/Action方式或者Segue到另一個ViewController;
UISplitViewControllerDelegate:盡可能早地設定view controller的代理,如在awakeFromNib中。
該代理的功能:設定在水準和垂直模式下,Master View是否隐藏,以及設定顯示Master View的按鈕的屬性。
Popover:UIPopoverController不是繼承自UIViewController,而在其中有一個UIViewController屬性:
在storyboard中建立Popover Segue:
在prepareForSegue中,判斷segue參數是否滿足isKindOf: UIStoryboardPopoverSegue,并在 UIStoryboardPopoverSegue的UIPopoverController屬性中擷取視圖控制器。