2014-10-16 36 views
0

我已經寫了一個應用程序在swift和部分與問題它有兩個視圖與他們相應的視圖控制器。這部分的目的是讓用戶點擊控制器1上的某個單元格,該單元格打開一個帶有表格視圖的模態視圖,可以從中選擇表格視圖單元格。當用戶點擊一個時,它應該返回到控制器1並更新原始單元上的細節文本。 問題是標籤不會更新。這裏是代碼:可以打印變量,但分配給另一個返回零(斯威夫特)

此代碼是從模態視圖控制器。這是獲取選定單元格並更新變量的代碼。

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    var find = totalProducts[productSectionTitles[indexPath.section]]! 
    selectedCell = find[indexPath.row] 
    let rootController = TableViewController() 
    println("\(selectedCell) from productController from selectedCell variable") 
    rootController.updateText(selectedCell) 
    self.dismissViewControllerAnimated(true, completion: nil) 
    cell.accessoryType = UITableViewCellAccessoryType.Checkmark 
} 

此代碼來自控制器1,其中模態視圖從其中啓動。這是從模態視圖控制器調用來更新文本。

func updateText(transferVar: String) { 
    println("\(transferVar) from rootController from transfer parameter") 
    detailsLabel?.text = transferVar 
    println(detailsLabel?.text) 

} 

因此該參數的數據完全模態視圖控制器之間傳送至rootController並且因爲它打印出正確的絕對保持的值。但只要我嘗試分配它返回零,我發現它應該已分配後,通過println()detailText。這是您點擊單元格時控制檯打印的內容。

Wood4 from productController from selectedCell variable 
Wood4 from rootController from transfer parameter 
nil 

我不知道如何獲得打印出transferVar的標籤。我應該添加標籤連接到視圖。我該如何解決?

在此先感謝。希望你能理解。 :]

回答

0

有詳細標籤已加載嗎?如果它是一個隱含的解包出口,它可能還沒有被加載,並且仍然是零。嘗試訪問它沒有?。現在它失敗了,沒有?它應該崩潰。

爲了確保detailLabel在分配給它的標籤之前被加載,您可以在viewDidLoad()中進行分配。一個簡單的方法是在text()中分配一個實例變量,然後在viewDidLoad()中將標籤設置爲該變量。

var labelText: String! 
func text(transferVar: String) { 
    println("\(transferVar) from rootController from transfer parameter") 
    labelText = transferVar 
} 
public override func viewDidLoad(){ 
    detailsLabel.text = labelText 
} 
+0

我仍然收到同樣的錯誤?感謝您的快速回答,儘管@connor – Tomblasta 2014-10-16 10:55:13

+0

對不起,我錯過了一部分代碼。它現在已經修復了 – connor 2014-10-16 10:59:58

+0

它仍然沒有工作:/我已經複製了你的新代碼,但它仍然返回零? – Tomblasta 2014-10-16 11:06:47