2016-11-29 20 views
0

我有一個表格視圖與靜態內容,我試圖訪問所選行的標籤文本,但它由於某種原因返回nil。什麼可能導致它?label.text爲表格單元格返回無(swift)

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    let currentCell = tableView.cellForRow(at: indexPath) as UITableViewCell? 
    let label = currentCell!.textLabel 
    if label != nil { 
     let text = label!.text 
     NSLog(text ?? "Label text is nil") 
    } else { 
     NSLog("Label is nil") 
    } 
} 

在我的例子我看到標籤文本是零

+0

如果tableview有靜態內容,爲什麼你需要訪問標籤文本?你不能只訪問填充你的tableview的數組中的數據嗎?就像'let text = labelTextArray [indexPath.row]' –

+0

@KaylaGalway,因爲該表沒有數據 - 它是從IB靜態的。 。 Elena,你確定你正在訪問正確的標籤嗎?也許你的文本是在其他標籤上,比如'detailTextLabel'或者其他你手動添加的標籤? – jovanjovanovic

+1

@jovanjovanovic,問題是在單元格的樣式(這是自定義),我改變它後,我得到了文字 –

回答

0

這是一個XY problem(鏈接),

你不應該存儲你的電池的觀點模型數據。單元格是一個視圖對象。它用於顯示信息並收集用戶的輸入。

您應該將數據存儲在模型對象中。對於表視圖,一個數組(或一個用於分區表視圖的數組數組)是一個不錯的選擇。

不是試圖從單元格標籤中獲取文本,而是使用indexPath從模型中查找所需的字符串。

0

確保您將單元格的樣式設置爲屬性檢查器,而不是「自定義」。 如果它是自定義的,則從您的代碼看來,您似乎沒有定位它。

+0

解決了這個問題!非常感謝! –

+0

很高興聽到! 有同樣的問題,太令人沮喪了。 –