2017-07-03 22 views
0

我花了2.5小时搜索谷歌,我想我从来没有在我的整个生活中谷歌搜索页面数10。直到今天。。试图预设.hour和.minute for func在viewDidLoad()

即时通讯新手与我希望应用程序打开新的viewcontroller用UIDatePicker(datepickermode:时间)预设时间用户选择上次他用datepicker设置时间的时间。基本上像iPhone报警,如果有帮助?

包含.hour和.minute(整数)的struct'Time'有它自己的类。

我想要一个微小的函数,它是与viewDidLoad()执行并设置timepicker。

@IBAction func timePicker(_ sender: UIDatePicker) { 
    let picker = timePicker.date 
    getTime(date: picker) 
    print(globalTime.savedTime) 
} 

func oldTime(withTime: TimeStruct.Time) { 

    var newTime = DateComponents() 
    newTime.hour = withTime.hour 
    newTime.minute = withTime.minute 

    var newDate = Date() 

    timePicker.calendar. 

    //blabliblub i've lost it here. the code makes no sense anymore 



} 

func getTime(date: Date) { 

let components = Calendar.current.dateComponents([.hour, .minute], from: date) 
globalTime.savedTime.hour = components.hour! 
globalTime.savedTime.minute = components.minute! 

} 

getTime保存设置的时间。 oldTime在再次查看时将先前设定的时间给予选取器以再次更改。

用户设置一个时间,点击保存按钮保存当前的小时和分钟来类型的变量“时间”

哦,如果可能的话,请帮我使用日期(的),不NSDate的()。

非常感谢你的时间!

Felix✌️

回答

-1

您是否尝试过使用普通选取器?日期选择器是具有特定内置函数的模板。然而,一个正常的人可能会做你需要的一切。例如,简单地做创建3个组件(0,1和2)控制时,分和PM/AM正常选择器:

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

    self.Picker.delegate = self 
    self.Picker.dataSource = self 
    PickerData = [["0","1",/*...*/,"9"],["0","1",/*...*/,"9"],["AM","PM"]] 
    self.Picker.selectRow(row: /*var*/, inComponent: /*component*/, animated: /*bool*/) 
} /*Insert data from previous session above via a variable*/ 

func numberOfComponents(in: UIPickerView) -> Int { 
    return 3 
} 

//Number of rows 
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
    return PickerData[component].count 
} 

//Data to return for the row and column being read 
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 
    return PickerData[component][row] 
} 

//Catpure the picker view selection 
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
    // This method is triggered whenever the user makes a change to the picker selection. 
    // The parameter named row and component represents what was selected. 
} 
+0

感谢你,是有道理的。尽管它实际上可以在晚些时候作为闹钟工作:是小时,分钟,上午/下午,足以创建一个当前每天都会触发的闹钟?或者我需要一个完整的日期来达到这个目的? 我发布后不久我也解决了这个问题。 – felixmp

+0

你重写日期选择器:D(除了它不再处理本地化和12 VS 24小时和东西) –

+0

你将需要日期 - 通知,NSTimers ...所有使用日期... –

0

希望这可以帮助任何人。感谢您的任何进一步的帮助:)

import UIKit 

var globalTime = TimeStruct() 

class Time_Setting: UIViewController { 

func oldTime(withTime: TimeStruct.Time) { 

    let newHour = withTime.hour 
    let newMinute = withTime.minute 
    let someDate = Date() 

    let newTimePicker = timePicker.calendar.date(bySettingHour: newHour, minute: newMinute, second: 0, of: someDate) 

    timePicker.date = newTimePicker! 

    } 
} 

另一个文件:

import UIKit 

class TimeStruct { 

struct Time { 
    var hour: Int 
    var minute: Int 
} 

var savedTime = Time(hour: 07, minute: 00) 
}