2016-12-02 114 views
0

我有一個UITableViewCell,它內嵌了一個UIStackView。一切正常,在手機和iPad上看起來不錯。但是,我在StoryBoard中發現了很多奇怪的錯誤,我不知道我是否可以忽略它們。通常,我討厭忽略警告。但在這種情況下可以嗎?我的表格單元格設置如下:Y在垂直StackView中缺少約束

UITableViewCell 
- Content View 
-- View (named outerView) 
--- View (named dateView for top banner color) 
--- UIStackView (vertical, named mainStackView, pinned to neighbors) 
---- UIButton (A) 
---- UIView (B) 
---- UIStackView (C, horizontal) 
---- UIStackView (D, horizontal) 
---- UILabel (E) 
---- UIButton (F) 

的mainStackView下的一切(字母A-F)都顯示故事板的錯誤,他們「極品約束:Y位置或高度」。然而,每個蘋果documentation也表示,他們將處理所有的約束和垂直對齊如果UIStackView是垂直方向。就像我說的那樣,它可以正常工作,排列的子視圖可以摺疊/隱藏,並且沒有其他警告。我只是不喜歡發佈帶有警告的代碼。我能做些什麼來解決這個問題,還是一個已知的問題?

更新:這是根據下面的評論請求的MCVE。點擊here並解壓該文件夾以獲取只能在Interface Builder中工作的裸骨項目。

+0

我不能的你與我們分享什麼樣的基礎上重現您的問題。如果我們無法重現您的問題,則很難解決問題。也許你可以創建一個[MCVE(http://stackoverflow.com/help/mcve),即以空白項目開始,然後添加一個表視圖和細胞再現您所描述的警告。然後你可以和我們分享這個項目。 – Rob

+0

@Rob - 我更新,它包括MCVE –

+0

您是否獲得編譯時警告或運行時的警告?我在Xcode 8.1中沒有編譯時間警告(8B62)。當我試圖運行此,顯然你沒有包含一個視圖控制器或單元格類,但是當我說這些,它工作得很好,雖然以避免運行時的警告,我已經把在'的viewDidLoad'以下行' UITableViewController'的子類:'self.tableView.rowHeight = UITableViewAutomaticDimension; self.tableView.estimatedRowHeight = 222;'。 – Rob

回答

2

我解決這個問題的方法是要麼:
1.在主堆棧視圖到的SuperView的底部,所以只有3個側面完全寄託卸下底部約束。

2.降低表格單元的高度。雖然它是基於標籤/按鈕高度的動態高度單元格,但我認爲它仍然需要在界面構建器中處於「正確」高度?

我不得不使用選項2,因爲如果我做了選項1,我的表格單元消失了,因爲它不知道如何使用單元格的高度。還值得重申的是,代碼仍然正常工作,它只是編譯警告。我不知道爲什麼沒有人能夠看到他們,儘管他們在同一層xcode。現在,我試着讓自己的3天時間回到工作崗位上,並在代碼中發出警告。

1

我也有垂直堆棧視圖類似的問題。 我給予高度約束任何子視圖(在我的情況下水平堆疊視圖),並在構建時刪除它解決它的辦法。 我也試過這個在你的MCVE上,它工作。

注意:這當然是黑客,但它解決了問題。