gpt4 book ai didi

ios - 如何使用UIPickerView的选定值作为通知的content.sound?

转载 作者:行者123 更新时间:2023-11-30 12:25:13 31 4
gpt4 key购买 nike

我已阅读 How to use selected value of UIPickerView as time interval for notifications?一遍又一遍,但我不知道如何将答案应用到我的情况。

基本上,我已经用两个选项编写了一个选择器 View 。我不知道该怎么办

1)使每个选择器 View 行对应一定的警报声音
2) 将 content.sound 设为变量,可以是两个警报声音选项之一。

我的 Assets.xcassets 中已经有两个声音文件,我只是不知道如何将其编程到警报中。

这是我到目前为止的代码:

@IBOutlet weak var soundPickerView: UIPickerView!

let sounds = ["chirping birds", "flowing water"]

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

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?
{
return sounds[row]
}

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int
{
return sounds.count
}


func scheduleNotification(at date: Date) {
let calendar = Calendar(identifier: .gregorian)
let components = calendar.dateComponents(in: .current, from: date)
let newComponents = DateComponents(calendar: calendar, timeZone: .current, month: components.month, day: components.day, hour: components.hour, minute: components.minute)
let trigger = UNCalendarNotificationTrigger(dateMatching: newComponents, repeats: false)
let content = UNMutableNotificationContent()
content.title = "🌖 wake up call 🌔"
content.body = "Time to wake up!"
content.sound = UNNotificationSound(named: "Morning Birds.aiff")

还有其他用于通知请求等的代码,但上面只是相关代码。最后一行代码是我知道需要更改的代码。

最佳答案

我认为你需要这样的东西:

class ViewController: UIViewController, UIPickerViewDelegate, 
UIPickerViewDataSource {
@IBOutlet weak var soundPickerView: UIPickerView!

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

let dic = [
"chirping birds" : "MorningBirdsFile.aiff"
,"flowing water" : "FlowingWaterFile.aiff"
]

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

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?
{
return Array(dic)[row].key
}

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int
{
return dic.count
}

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
let calendar = Calendar(identifier: .gregorian)
let components = calendar.dateComponents(in: .current, from: date)
let newComponents = DateComponents(calendar: calendar, timeZone: .current, month: components.month, day: components.day, hour: components.hour, minute: components.minute)
let trigger = UNCalendarNotificationTrigger(dateMatching: newComponents, repeats: false)
let content = UNMutableNotificationContent()
content.title = "🌖 wake up call 🌔"
content.body = "Time to wake up!"
content.sound = UNNotificationSound(named: Array(dic)[row].value)


print(Array(dic)[row].value)
}
}

或者您可以获取选择器 View 的值并将其存储在某个变量中,当用户确认时您将其设置到日历中。

关于ios - 如何使用UIPickerView的选定值作为通知的content.sound?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44291752/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com