Печать метки времени на этикетке из функции IB кнопки в Xcode (Swift) - PullRequest
0 голосов
/ 07 мая 2020

Я хочу создать метку времени, которая запускается по текущему времени, когда кнопка нажата в одном контроллере представления, и печатать ее на этикетке в другом контроллере представления.

Я использую Xcode 11 и большинство последняя версия swift.

Думаю, это функция, которая у меня есть до сих пор, но я не знаю, как реализовать ее на кнопке или метке, на которую я хочу напечатать:

func getDateDayAndTime(timestamp: NSNumber) -> String {
        let date  = Date(timeIntervalSince1970: Double(truncating: timestamp)/1000)
        let calendar = Calendar.current

        if calendar.isDateInToday(date) {
            let dateFormatter = DateFormatter()
            dateFormatter.timeZone = NSTimeZone.local
            dateFormatter.dateFormat = "hh:mm a"
            let time = dateFormatter.string(from: date)
            return time
        }else if calendar.isDateInYesterday(date) {
            return "Yesterday"
        }
        else if calendar.isDateInWeekend(date) {
            let component = calendar.component(Calendar.Component.weekday, from: date)
            return self.getDay(value: component)
        } else {
            let dateFormatter = DateFormatter()
            dateFormatter.timeZone = NSTimeZone.local
            dateFormatter.dateFormat = "dd/MM/YY"
            let time = dateFormatter.string(from: date)
            return time
        }
    }

Ответы [ 2 ]

0 голосов
/ 07 мая 2020

Функция, возвращающая текущее время:

  func getTodayString() -> String{

            let date = Date()
            let calender = Calendar.current
            let components = calender.dateComponents([.year,.month,.day,.hour,.minute,.second], from: date)

            let year = components.year
            let month = components.month
            let day = components.day
            let hour = components.hour
            let minute = components.minute
            let second = components.second

            let today_string = String(year!) + "-" + String(month!) + "-" + String(day!) + " " + String(hour!)  + ":" + String(minute!) + ":" +  String(second!)

            return today_string

        }

Нажатая кнопка:

@IBAction func buttonPressed(_ sender: Any) {
yourLabel.text = getTodayString()
}
0 голосов
/ 07 мая 2020

Мы можем отправить значение timestamp из ViewController в SecondViewController, как показано ниже,

import UIKit

class ViewController: UIViewController {

    @IBAction func getTimeStampButtonAction(_ sender: Any) {
        let timestampVal = NSDate().timeIntervalSince1970
        let myTimeInterval = TimeInterval(timestampVal)
        let timeStamp = NSDate(timeIntervalSince1970: TimeInterval(myTimeInterval))
        let timeStampString = stringFromDate(timeStamp as Date)

        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        let homeView  = storyboard.instantiateViewController(withIdentifier: "SecondViewController") as! SecondViewController
        homeView.timeStamp = timeStampString
       self.navigationController?.pushViewController(homeView, animated: true)

    }

    func stringFromDate(_ date: Date) -> String {
        let formatter = DateFormatter()
        formatter.dateFormat = "dd MMM yyyy HH:mm" //yyyy
        return formatter.string(from: date)
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }
}

SecondViewController.swift

import UIKit

class SecondViewController: UIViewController {
    @IBOutlet weak var TimeStampLabel: UILabel!
     var timeStamp: String!

    override func viewDidLoad() {
        super.viewDidLoad()
        TimeStampLabel.text = timeStamp
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...