分段控制:控制重复间隔

时间:2016-06-20 09:07:12

标签: ios swift uikit uisegmentedcontrol localnotification

我无法弄清楚如何让用户选择本地通知的重复间隔。我已经链接到两个图像,其中详细描述了问题。

This is the image of the file where I need to insert the choose from the segmented control

And this is the image of the file where the segmented control is placed.

1 个答案:

答案 0 :(得分:0)

我已查看了您的代码,一个解决方案可能是将segmentedControl的值作为参数添加到TodoItem,就像您现在在gentag中所做的那样参数。

然后在您的addItem方法中,您只需"需要将您现在拥有的Int值转换为NSCalendarUnit,您可以将其移至notification.repeatInterval

为了保持这个漂亮,您可以创建一个知道如何从Enum转换为Int值的新NSCalendarUnit,然后您的gentag参数可以是此类型

因此,在您拥有TodoSchedulingViewController的文件中,您可以在文件顶部写下这样的内容:

import UIKit

enum RepeatInterval: Int {
    case None = 0
    case Daily = 1
    case Weekly = 2

    func toCalendarUnit() -> NSCalendarUnit {
        switch self {
        case .None:
            return NSCalendarUnit(rawValue: 0)
        case .Daily:
            return NSCalendarUnit.Day
        case .Weekly:
            return NSCalendarUnit.Weekday
        }
    }
}

class TodoSchedulingViewController: UIViewController {
...

然后您可以像这样使用:

ViewController

let todoItem = TodoItem(deadline:....,
                        title:....,
                        gentag: RepeatInterval(rawValue: segmentedControl.selectedSegmentIndex)!,  //You can force unwrap here, because you know the value is always one you get from your segmentedControl
                        UUID......)

TodoList课程中:

...
notification.userInfo = ["title" : item.title, "UUID" : item.UUID]
notification.repeatInterval = item.gentag.toCalendarUnit()

希望这是有道理的。

哦......下次,请发布您的实际代码而不是图片,这样可以更轻松地快速查看正在发生的事情并更快地将代码片段从代码中复制到答案中:)