2017-07-21 45 views
0

我有一個簡單的TableView細胞與約束標準附件查看

enter image description here

cell.accessoryType = .detailButton 

我需要從左側約束accessoryView的添加標籤。我試試這個代碼:

addConstraints(NSLayoutConstraint.constraints(
    withVisualFormat: "H:|-[v0]-5-[v1]", options: NSLayoutFormatOptions(), 
    metrics: nil, views: ["v0":partTitle, "v1":self.accessoryView!])) 

,但得到的錯誤:致命錯誤:意外發現零而展開的可選值

五月有人能幫助,如何從左側單元格來accessoryView的標籤創建約束

+0

我懷疑cell.accessoryView只返回一個視圖,如果你提供了一個自定義的。如果我在設置'cell.accessoryType = .detailButton'後在調試器中斷,我發現'cell.accessoryView'爲零,而私有成員'cell._accessoryView'有一個按鈕作爲它的值。 –

回答

1

好了,你先設置accesoryView到一個空的UIView,第二你需要聲明一個字典至極包含標籤和accesory觀點,那麼你需要設置NSLayoutFormatOptions爲0,並刪除了「H:」從視覺格式。例如,你可以這樣做:

self.accesoryView = UIView() 

let views: [String : Any] = [ 
    "v0" : partTitle, 
    "v1" : self. 
] 
addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "|-[v0]-5-[v1]", 
       options: NSLayoutFormatOptions(rawValue: 0), 
       metrics: nil, views: views)) 

重要的是accesory查看musn't是零。

+0

有一個錯誤信息:由於未捕獲的異常'NSInternalInconsistencyException'導致應用程序錯誤,原因:'無法設置視圖層次結構,但沒有爲約束準備好。 –

+0

對不起......改變'「v1」:self.'到'「v1」:self.accesoryView!'。也許它會解決問題。你添加了嗎? –

+0

是的,我嘗試使用此修復程序。我有另一個我會稍後發佈。 –