2016-11-06 82 views
4

所以我創建了一個鬧鐘。一個視圖控制器是一個表視圖。另一個視圖控制器由一個帶有提交按鈕的UIDatePicker組成。目標是當用戶點擊提交按鈕時,它將日期保存在日期選擇器上。除了保存日期之外,它還是表格視圖控制器的一部分。我試圖顯示保存爲單元格中標籤的時間。通過segue傳遞變量? Xcode 8 Swift 3

  1. 這是我的DatePicker視圖控制器的代碼。我在函數的外面定義了變量。然後當他們點擊提交時,它應該更新值。但是,它在通過segue時不會更新它。

    var myDate = "1:39 PM" 
    
    
    
    
    @IBAction func submitDate(_ sender: AnyObject) { 
    
        myDate = DateFormatter.localizedString(from: dateOutlet.date, dateStyle: DateFormatter.Style.none, timeStyle: DateFormatter.Style.short) 
    
    
    } 
    
    
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    
        if segue.identifier == "save" { 
    
         let toViewController = segue.destination as! TableViewController 
    
         toViewController.myDate = myDate 
    
    
    
        } 
    } 
    
  2. 這是我的表視圖控制器的代碼。當我點擊提交時,它不會將標籤顯示爲在DatePicker中選擇的時間。它顯示「下午1點39分」。這是我最初定義的。

    var myDate = "0" 
    
    
    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    
    
    
        let cell = Bundle.main.loadNibNamed("TableViewCell", owner: self, options: nil)?.first as! TableViewCell 
    
    
        cell.textLabel?.text = myDate 
    
        return cell 
    
    
    
    } 
    

回答

8

別再費心尋找,除非你打算以後使用它在你的源視圖控制器申報myDate。另外,如果您的submitDate函數中沒有任何代碼來呈現您的目標視圖控制器,那麼您可能不需要它,因爲您設置的'save' segue會自動處理它。

在源視圖控制器

@IBAction func submitDate(_ sender: AnyObject) { 

    //don't need anything here - remove this function unless doing anything else 


} 


    override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 

    if segue.identifier == "save" { 
     if let toViewController = segue.destination as? TableViewController { 
      toViewController.myDate = DateFormatter.localizedString(from: dateOutlet.date, dateStyle: DateFormatter.Style.none, timeStyle: DateFormatter.Style.short) 
     } 
    } 
} 

在目標視圖控制器

var myDate: String! 


override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 



    let cell = Bundle.main.loadNibNamed("TableViewCell", owner: self, options: nil)?.first as! TableViewCell 


    cell.textLabel?.text = myDate 

    return cell 



}