2016-11-06 5 views
4

私は目覚まし時計を作成しています。 1つのビューコントローラはテーブルビューです。もう一方のビューコントローラは、送信ボタン付きのUIDatePickerで構成されています。目標は、ユーザーが[送信]ボタンをクリックすると、日付ピッカーに日付を保存することです。日付を保存するだけでなく、それはテーブルビューコントローラのセグになります。私はセルにラベルとして保存された時間を表示しようとしています。セグの変数を渡す? 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 PM」と表示されます。それは私が最初にそれを定義したものでした。

    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機能でターゲットビューコントローラを表示するコードがない場合は、設定したセグが自動的に処理されるため、必要ないでしょう。ソース・ビュー・コントローラにおいて

ターゲット・ビュー・コントローラにおいて

@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 



} 
関連する問題