2016-03-10 25 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

相关问题