2015-04-16 53 views
3

如何從Swift應用打開日曆(例如,按下按鈕時)?或者有沒有辦法在應用中的視圖控制器中嵌入日曆? 我想避免使用別人編寫的外部日曆。謝謝!從Swift應用打開日曆

回答

6

您可以通過使用URL方案calshow://打開日曆應用:

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

隨着EventKit,你可以實現你的自我的日曆。您應該從Apple網站上閱讀Calendar and Reminders Programming Guide

+0

我找不到Swift的日曆編程指南,只能用於Objective-C。我更喜歡Swift。 – Amy

+0

你可以將你自己的代碼翻譯成swift。或者看看這個:https://gist.github.com/mchirico/d072c4e38bda61040f91#file-cal-swift –

+0

我們可以像UIApplication.sharedApplication()一樣打開默認提醒。openURL(NSURL(string:「calshow:// 「)!)? –

1

隨着HoaParis的提及,您可以使用openURL方法調用日曆。

默認情況下,蘋果沒有嵌入式日曆,但您可以查看其他日曆,例如github上提供的其他日曆,例如開源軟件CVCalendar。所以你可以在你的項目中使用它,或者檢查開發者是如何編碼日曆的。

2

的OpenURL棄用iOS10

從蘋果公司的指導What’s New iOS中的部分上的UIKit:

新的UIApplication方法的OpenURL:選擇:completionHandler :,它執行 異步並在主隊列上調用指定的完成處理程序 (此方法替換openURL :)。

斯威夫特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+中,你需要指定pri在您的info.plist文件中出現錯誤的使用說明,否則您的應用程序將崩潰。