2017-08-20 3 views
0

J'ai un bouton d'ajout qui vous amène à une nouvelle vue avec des entrées de texte pour ajouter des informations. Une fois que vous avez appuyé sur le bouton ajouter, cela vous ramène à la tableview et ajoute toutes les entrées aux étiquettes. J'ai du mal à faire passer l'heure actuelle dans l'étiquette de dateStamp que j'ai faite. quelqu'un peut-il aider?Comment ajouter l'heure actuelle à l'étiquette dans la vue de tableau cellule swift 3

contrôleur principal

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() 
    } 

second contrôleur

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) 
     } 
    } 
} 

Répondre

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

si vous souhaitez convertir le format comme d'aujourd'hui

passent juste la date de cette fonction et il retournera une chaîne en disant comme il y a 3 semaines

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") 
    } 
} 
+0

Merci c'était ce que je cherchais! Je ne peux pas voter jusqu'à ce que j'ai une réputation de 15, désolé à ce sujet! Y a-t-il une façon de faire cela à la main? Il y a 1 minute. il y a 1 jour. Il y a 2 semaines, etc ou devrais-je besoin de construire une fonction pour cela –

+0

oui vous pouvez le faire .... –

+0

vérifier ma réponse éditée –

0

Pour ce faire, vous pouvez utiliser un délégué! Au moins c'est ce que j'ai appris.

Passing Data using the Delegate Method

+0

non je reçois cette partie. C'est en ajoutant un horodatage avec lequel je me bats. –

+0

hmm avez-vous de la difficulté à obtenir l'horodatage? ou vous avez l'horodatage mais ne savez pas comment l'ajouter à l'étiquette? si c'est le deuxième cas puis comme il l'a mentionné dans la vidéo lorsque l'utilisateur a cliqué sur le bouton ajouter vous obtenez l'horodatage actuel et le renvoyer et l'ajouter à l'étiquette – Siyavash

+0

non je pense que je suis aux prises avec un l'horodatage en premier lieu. J'ai regardé en ligne à plusieurs choses, et tout ce que j'essaie semble ne pas fonctionner. J'ai fait un var dateStamp = Date(). Maintenant j'essaye de l'obtenir quand j'appuie sur le bouton Add Invoice –