2017-08-16 17 views
0

我將tableviewcell的標籤文本設置爲另一個viewcontroller的UILabel有點麻煩。我不能將單元格標籤文本傳輸到UILabel

我的代碼如下:

如果
let indexPath = tableView.indexPathForSelectedRow; 
    let currentCell = tableView.cellForRow(at: indexPath!)!as! ViewControllerTableViewCell 
    let storyboard = UIStoryboard(name:"Main",bundle:nil) 
    var viewController = storyboard.instantiateViewController(withIdentifier: "DetailVC")as! DetailVC 
    viewController.comText = currentCell.labelName.text 
    present(viewController, animated: true, completion: nil) 
+0

從哪種方法你執行上面的代碼?輸出值爲log時,viewController.comText包含的值是多少? – Hooda

+1

崩潰日誌說有什麼錯誤? –

+0

錯誤是什麼? –

回答

0

正在發生的事情是,你正在試圖訪問視圖時尚未創建它尚未:

This code will create a view controller

var viewController = storyboard.instantiateViewController(withIdentifier: "DetailVC")as! DetailVC 

Here you are trying to set the label text before presenting your controller.

viewController.comText = currentCell.labelName.text 

此時控制器沒有加載其查看。由於沒有看法,所以沒有標籤。你應該做的是在你的destinationViewController設置一個字符串屬性,並在這裏設置它。然後在您的destinationViewController ViewDidLoad()方法中將標籤文本設置爲屬性中引用的字符串。

This code presents the viewcontroller and tell it it should load its view

present(viewController, animated: true, completion: nil) 

Here is a picture of the life cycle of a view controller

只能與視圖工作時,它引發了viewDidLoad中()方法 enter image description here

+0

根據這一行:'viewController.comText = currentCell.labelName.text''comText'已經是一個String屬性(否則XCode應該至少拋出一個警告,並可能崩潰)。問題是什麼時候閱讀'comText'來將值設置爲目標標籤。 – Larme

+0

我們不能確定它是否是字符串或標籤..我已發佈評論,但他沒有回覆 –

-1

不知道它是如此的微不足道,但你comText實際上是一個UILabel? 因爲如果是的話,你必須不設置text性質整個對象:

viewController.comText = currentCell.labelName.text 

應該是這樣

viewController.comText.text = currentCell.labelName.text 
0

作爲一個建議(如果馬西莫的建議沒有工作),嘗試添加以下創建視圖控制器後線:

_ = viewController.view! 

可能並不需要「砰」(我沒有我的Xcode此刻打開),但這樣會造成viewDidLoad執行,從而「膨脹」你的視圖及其在你的故事板中聲明/定義的相關小部件。然後,您可以將您希望的任何文本分配給您的目標UILabel.text屬性。

相關問題