2015-05-06 35 views
0

使用UITableViewNSFetchedResultsController我刷新並顯示了我的表格的內容。在某些時候,我有一個沒有標題視圖的屏幕。它應該代替單元之間的空間。UITableView中的我的頁眉視圖未添加到UIView層次

enter image description here

當我調試視圖層次,我有以下信息。 UI View層次結構中的選定單元適用於中的選定單元調試視圖層級enter image description here

enter image description here

要創建我用下面的方法頭視圖:

override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { 
    let workday = workDayObjectForSection(section) 
    let cell = tableView.dequeueReusableCellWithIdentifier(PBOUserWorkDayCellIdentifier) as! PBOUserWorkDayTableViewCell 
    cell.configureCellWithWorkDay(workday) 

    return cell 
} 
+1

爲什麼要將'ReusableCell'放到標題中?這是原因 – Azat

+0

真的嗎?我已經建議在堆棧溢出的另一個問題中使用表視圖單元格作爲標題視圖。 –

+0

您可以使用相同的視圖,但不應該將它從'tableView'作爲可重用的單元格,即您應該從頭開始創建它 – Azat

回答

0

你不應該使用dequeueReusableCellWithIdentifier方法tableView頭得到view。從documentation

如果一個單元對象是可重用的,您可以在故事板中爲其指定一個重用標識符(任意字符串)。在運行時,表視圖將單元對象存儲在內部隊列中。當表視圖詢問數據源配置用於顯示的單元對象時,數據源可以通過發送dequeueReusableCellWithIdentifier訪問排隊對象:消息發送到表視圖,傳入重用標識符

這意味着,當你返回頭作爲重用單元,tableView可能會將它作爲單元顯示在另一個地方。請注意,標題的行爲與單元格不同,它保留在頂部而部分可見。

但是,您可以使用相同的標題視圖,但每次從xib,storyboard等創建它,並且不分配任何重用標識符。如果你正在尋找一些優化,你可以將它們存儲在一些數組中並返回緩存的值。但我想建議不要使用UITableViewCell的子類作爲表標題視圖

相關問題