2017-08-20 1 views
0

Ich habe eine Schaltfläche zum Hinzufügen, die Sie zu einer neuen Ansicht mit Texteingaben zum Hinzufügen von Informationen führt. Sobald Sie die Schaltfläche "Hinzufügen" drücken, gelangen Sie zurück zur Tabellenansicht und fügen alle Eingaben den Beschriftungen hinzu. Ich habe Probleme, die aktuelle Zeit in das dateStamp-Label zu ziehen, das ich gemacht habe. Kann jemand helfen?So fügen Sie der Tabelle in der Tabellenansicht die aktuelle Zeit hinzu swift 3

Haupt-Controller

var dateStamp = Date() 
var clientName = [""] 
var projecDescript = [""] 

// Custom cell to make all input fields custom 
class CustomCell: UITableViewCell { 
    //Make your outlets here, connect the outlets from cell in your storyboard 

    @IBOutlet var clientNameLabel: UILabel! 
    @IBOutlet var descriptionLabel: UILabel! 
    @IBOutlet var dateStamp: UILabel! 

} 

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 

    @IBOutlet var clientTableList: UITableView! 

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return (clientName.count) 
     return (projecDescript.count) 
    } 

    // This is the new items added into the inputs 
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
    { 
     let cell = tableView.dequeueReusableCell(withIdentifier: "clientCell", for: indexPath) as! CustomCell 

     // Adds Clients Name 
     let companyName = clientName[indexPath.row] 
     cell.clientNameLabel?.text = companyName 

     // Adds Clients Description 
     let descriptionName = projecDescript[indexPath.row] 
     cell.descriptionLabel?.text = descriptionName 



     return cell 
    } 

    func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool { 
     return true 
    } 

    override func viewDidAppear(_ animated: Bool) { 
     clientTableList.reloadData() 
    } 

zweiten Controller

import UIKit 

class AddInvoice: UIViewController { 

    @IBOutlet var clientNameInput: UITextField! 
    @IBOutlet var descriptionNameInput: UITextView! 



    @IBAction func addInvoice(_ sender: Any) { 

     if clientNameInput.text != "" && descriptionNameInput.text != "" 
     { 
      clientName.append(clientNameInput.text!) 
      //clientInput.text = "" 

      projecDescript.append(descriptionNameInput.text!) 
      //descriptionFieldInput.text = "" 


      _ = navigationController?.popViewController(animated: true) 
     } 
    } 
} 

Antwort

3
let timeStamp = "\(DateFormatter.localizedString(from: Date(), dateStyle: .long, timeStyle: .long))" 

wenn Sie wollen Format konvertieren, wie von heute

nur das Datum dieser Funktion übergeben, und es wird eine Zeichenfolge sagen wie vor 3 Wochen

func relativePast(for date : Date) -> String { 

    let units = Set<Calendar.Component>([.year, .month, .day, .hour, .minute, .second, .weekOfYear]) 
    let components = Calendar.current.dateComponents(units, from: date, to: Date()) 

    if components.year! > 0 { 
     return "\(components.year!) " + (components.year! > 1 ? "years ago" : "year ago") 

    } else if components.month! > 0 { 
     return "\(components.month!) " + (components.month! > 1 ? "months ago" : "month ago") 

    } else if components.weekOfYear! > 0 { 
     return "\(components.weekOfYear!) " + (components.weekOfYear! > 1 ? "weeks ago" : "week ago") 

    } else if (components.day! > 0) { 
     return (components.day! > 1 ? "\(components.day!) days ago" : "Yesterday") 

    } else if components.hour! > 0 { 
     return "\(components.hour!) " + (components.hour! > 1 ? "hours ago" : "hour ago") 

    } else if components.minute! > 0 { 
     return "\(components.minute!) " + (components.minute! > 1 ? "minutes ago" : "minute ago") 

    } else { 
     return "\(components.second!) " + (components.second! > 1 ? "seconds ago" : "second ago") 
    } 
} 
zurückkehren
+0

Danke das war was ich gesucht habe! Ich kann es nicht abstimmen, bis ich einen Ruf von 15 habe, Entschuldigung! Gibt es einen kurzen Weg, dies zu sagen ... vor 1 Minute. Vor 1 Tag. Vor 2 Wochen, etc. oder muss ich eine Funktion für diese –

+0

bauen ja können Sie dies tun .... –

+0

Überprüfen Sie meine bearbeitete Antwort –

0

Um dies zu tun, Sie einen Delegaten verwenden können! Zumindest habe ich das gelernt.

Passing Data using the Delegate Method

+0

Nein, ich bekomme diesen Teil. Es fügt einen Zeitstempel hinzu, mit dem ich kämpfe. –

+0

Hmm, hast du Probleme den Zeitstempel zu bekommen? oder Sie haben den Zeitstempel, wissen aber nicht, wie Sie ihn zum Etikett hinzufügen? Wenn es der zweite Fall ist dann wie es im Video erwähnt, wenn der Benutzer auf die Schaltfläche Hinzufügen geklickt hat, erhalten Sie den aktuellen Zeitstempel und senden Sie es zurück und fügen Sie es dann zu Etikett – Siyavash

+0

nein ich denke, ich habe mit kämpfen bekommen Zeitstempel an erster Stelle. Ich habe online nach verschiedenen Dingen gesucht, und alles, was ich versuche, scheint nicht zu funktionieren. Ich habe eine var dateStamp = Date() erstellt. Jetzt versuche ich, das zu bekommen, wenn ich den Knopf "Rechnung hinzufügen" klicke –

Verwandte Themen