2016-03-10 26 views
1

我想知道如何在應用的首次運行中隱藏Today按鈕。如何隱藏應用第一次運行時的小部件?

我不想從application(_:didFinishLaunchingWithOptions:)而是來自小部件的info.plist或生命週期的方法把它藏在爲了從控件邏輯中分離出的AppDelegate

有沒有人有任何想法如何做到這一點?

+0

你是什麼意思? –

+0

@RashwanL我的意思是不顯示給用戶。可以使用'setHasContent:forWidgetWithBundleIdentifier:'方法 –

回答

4

Apples documentation

典型地,窗口小部件顯示在今日視圖當其具有內容 顯示。如果當前正在運行的窗口小部件不再具有顯示的內容,則它可以獲得窗口小部件控制器並將setHasContent:forWidgetWithBundleIdentifier:方法的 中的標誌設置爲false。

你可以做的是做到以下幾點:

檢查由NSUserDefaults如果it's首次應用程序正在運行,並在集setHasContent:forWidgetWithBundleIdentifier爲false。下面的代碼示例:

if !NSUserDefaults.standardUserDefaults().boolForKey("firstRun"){ 
    // first run so do set setHasContent:forWidgetWithBundleIdentifier to false 

    // Set your NSUserDefaults firstRun value to false so it does not run again 
    NSUserDefaults.standardUserDefaults().setBool(true, forKey: "firstRun") 
} 
+0

我將這段代碼添加到了我的窗口小部件的VC的'viewDidLoad()'中,而不是在應用程序的'AppDelegate'中(這正是我正在尋找的)。唯一的區別是我使用了'NSUserDefaults(suiteName:)',不知道是否可以依賴小部件代碼中的'standardUserDefaults()'。 –

+0

是的,就像您添加它一樣,如果您需要示例代碼,我也可以幫助您。 –

+0

@TeodorCiuraru @TeodorCiuraru我批准了你的編輯,因爲它是與你的問題有關的答案,但是如果你想要改變一些基本的東西,看起來不像字體錯誤,先寫評論,等待一天的答案。這是新答案的標準,以及更多讚揚的答案。考慮到在極少數情況下你可能是錯的。 – hynekcer

相關問題