2016-04-02 36 views
1

我在XIB中用CustomCell做了一個小UITableView。removeFromSuperView()和單元格=致命錯誤:意外地發現零,同時展開一個可選值

如果布爾表示FALSE,我想刪除視圖。

所以我所做的是一個小FUNC:

func deleteStackOrNot(valeurPLIST: Bool, stack: UIStackView) { 
if valeurPLIST { 
    stack.hidden = false 

} else { 
    stack.removeFromSuperview() 
     } 
} 

然後:

deleteStackOrNot((corpusArray[indexPath.row]["iconesNPBool"] as! Bool), stack: cell.iconesStackOutlet) 

它的第一滾動偉大的工作下來,2個細胞。但是,當我滾動回第一個單元格時,得到:

fatal error: unexpectedly found nil while unwrapping an Optional value 

指向函數調用。

我想我已經刪除了出口一樣,「永遠」,而現在的Xcode犯規似乎是能夠重建它...

我也試圖與.hidden但我需要將其刪除,因爲約束在視圖隱藏時保持不變。

您認爲如何?

回答

2

您有幾種選擇:

  1. 你可以添加一個UIStackView屬性設置爲自定義單元格類持有的觀點,而這不是在層次結構並將其添加回
  2. 您可以創建一個的.xib只用堆棧視圖並通過加載構建一個新視圖。
  3. 你可以重新創建代碼堆棧視圖,如果是零
  4. 你無法刪除它,只是改變約束條件(或大小)

編輯:要做到#1

地址:

var hiddenStack: UIStackView? 

然後,在你FUNC(填寫正確的代碼中的註釋是):

func deleteStackOrNot(valeurPLIST: Bool, stack: UIStackView) { 
    if valeurPLIST { 
     // put the hidden stack back in the view here 
     // using self.hiddenStack 
    } else { 
     self.hiddenStack = stack 
     stack.removeFromSuperview() 
    } 
} 
+0

我認爲第四個選項應該是蠻好的,但我也嘗試過,但是,當我做 cell.mapOutlet.frame = CGRectMake(0,0,0,0) 沒有什麼變化... – petaire

+0

該框架可能會與您的限制相沖突。我推薦選項#1作爲最簡單和最有可能的工作 –

+0

嗯,我不確定我真的明白它的含義,但除非有人知道如何清楚,否則我會查看Google。 – petaire

相關問題