从Swift app打开日历

时间:2015-04-16 19:37:54

标签: swift events calendar

如何从Swift应用程序打开日历(例如按下按钮时)?或者有没有办法在应用程序的视图控制器中嵌入日历? 我想避免使用其他人编写的外部日历。谢谢!

3 个答案:

答案 0 :(得分:6)

您可以使用网址方案calshow://打开日历应用:

UIApplication.sharedApplication().openURL(NSURL(string: "calshow://")!)

使用EventKit,您可以实现自己的日历。您应该从Apple网站上阅读Calendar and Reminders Programming Guide

答案 1 :(得分:2)

openURL在iOS10中已弃用

从关于UIKit的部分中iOS的iOS What’s New指南:

  

新的UIApplication方法openURL:options:completionHandler:,其中   以异步方式执行并调用指定的完成处理程序   在主队列上(此方法替换openURL:)。

Swift 3

func open(scheme: String) {
  if let url = URL(string: scheme) {
    if #available(iOS 10, *) {
      UIApplication.shared.open(url, options: [:],
        completionHandler: {
          (success) in
           print("Open \(scheme): \(success)")
       })
    } else {
      let success = UIApplication.shared.openURL(url)
      print("Open \(scheme): \(success)")
    }
  }
}

// Typical usage
open(scheme: "calshow://")

Objective-C

- (void)openScheme:(NSString *)scheme {
  UIApplication *application = [UIApplication sharedApplication];
  NSURL *URL = [NSURL URLWithString:scheme];

  if ([application respondsToSelector:@selector(openURL:options:completionHandler:)]) {
    [application openURL:URL options:@{}
       completionHandler:^(BOOL success) {
      NSLog(@"Open %@: %d",scheme,success);
    }];
  } else {
    BOOL success = [application openURL:URL];
    NSLog(@"Open %@: %d",scheme,success);
  }
}

// Typical usage
[self openScheme:@"calshow://"];

注意: - 不要忘记在info.plist文件中添加隐私使用说明。如果您尝试打开任何系统应用,那么在iOS 10+中需要在info.plist文件中指定隐私使用说明,否则您的应用会崩溃。

答案 2 :(得分:1)

正如HoaParis已经提到的,您可以使用openURL方法调用日历。

默认情况下苹果没有嵌入式日历,但您可以查看其他日历,例如github上提供的开源日历CVCalendar。因此,您可以在项目中使用它,也可以检查开发人员如何编写日历。