• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - Preference Bundle PSLinkListCell 更改图像

[复制链接]
菜鸟教程小白 发表于 2022-12-12 10:29:20 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在尝试为我在 Xcode (iOSOpenDev) 上创建通知中心小部件时通过勾选“首选项包”框添加的首选项包编写代码。我有一个 PSLinkListCell 里面有三个项目。我希望这三个项目也根据所选选项更改 UIimage View 中的图像。

任何帮助将不胜感激。

PLIST(仅 PSLinkListCell)



UIImage View



Best Answer-推荐答案


因此,当用户使用 Settings (Preferences.app) 更改设置时,您需要让您的小部件 代码 得到通知。根据您的 plist 设置方式,它看起来像 Darwin notification命名

dylankelly.MyStat-preferencesChanged

当用户更改设置时,将通过 Darwin 通知中心发送。因此,您需要注册一个回调,以便在发生此通知时调用。一旦你的代码被加载,你应该做这样的事情(例如,在 MyWidgetViewController.m 中,如果这是管理 ImageView 的地方):

#include <notify.h>

...

CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), //center
                                (void*)self, // observer
                                onPreferencesChanged, // callback
                                CFSTR("dylankelly.MyStat-preferencesChanged"), // event name
                                NULL, // object
                                CFNotificationSuspensionBehaviorDeliverImmediately);

你的回调方法(把它放在同一个 MyWidgetViewController.m 文件中)将是:

static void onPreferencesChanged(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo) {

    // since this is a static method, we pass the instance in the observer parameter
    MyWidgetViewController* vc = (MyWidgetViewController*)observer;
    [vc updateImage];
}

最后,读取偏好 plist 并更新 ImageView 的代码:

-(void) updateImage {
    // load the preferences plist file, and read the new color_pref value
    NSDictionary* sharedPrefs = [[NSDictionary alloc] initWithContentsOfFile: PLIST_FILENAME];
    NSNumber* color = (NSNumber*)[sharedPrefs valueForKey: @"color_pref"];
    int colorValue = [color intValue];
    // the integer values correspond to the validValues defined in the 
    //  preference bundle's plist file
    switch (colorValue) {
        case 1:
           bgView.image = [UIImage imageNamed: @"blueBackground"];  // for blueBackground.png / [email protected]
           break;
        case 2:
           bgView.image = [UIImage imageNamed: @"greenBackground"];
           break;
        case 3:
           bgView.image = [UIImage imageNamed: @"redBackground"];
           break;
        default:
           break;
    }
}

关于ios - Preference Bundle PSLinkListCell 更改图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16002111/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap