-1

好吧!

那么,如何将我设置图标的方式集中在一个更大的项目中。

设置[UIImage ImageNamed: @"iconNamed"];随处可见的图标,并且必须查看项目中的所有位置以在更改图标时更改字符串,并且设置返回字符串的方法实现的长列表。

最终结果应该是这样的:

带有 iconTypes 的 iOS 自动完成列表

4

2 回答 2

1

所以首先你创建一个 .h 文件,比如@interface MyIcons : NSObject

然后你开始你的单例实现:

+(MyIcons *)sharedIcons ;

其次是:

    typedef enum {
       IconMenuSmallWht,
       IconMenuBigWht,
       IconShoppingSmall,
       IconShoppingBig,
       IconSleepingSmall,
       IconSleepingBig,
    } iconType;

    - (NSString*) iconToString:(iconType) chooseIcon;

在 .m 文件中,您首先完成单例实现:

    +(MyIcons *)sharedIcons {
static dispatch_once_t once;
static MyIcons *sharedIcons = nil;

dispatch_once(&once, ^{
    sharedIcons = [[self alloc] init];
});
return sharedIcons;
}

最后你做:

   - (NSString*) iconToString:(iconType) chooseIcon {
NSString *result = nil;

switch(chooseIcon) {
    case IconMenuSmallWht:
        result = @"ag_icons_btn_menu_wht";
        break;
    case IconMenuBigWht:
        result = @"c";
        break;
    case IconShoppingSmall:
        result = @"ag_icons_idx_ico_shopping_wht";
        break;
    case IconShoppingBig:
        result = @"ag_icons_idx_ico_shopping_wht_120";
        break;
    case IconSleepingSmall:
        result = @"ag_icons_idx_ico_hotel_wht";
        break;
    case IconSleepingBig:
        result = @"ag_icons_idx_ico_hotel_wht_120";
        break;
  return result;
}

而已。它只是将图标添加到枚举和此开关/案例中。无论你想在哪里实现你的图标,你只需#import MyIcons.h

添加[MyIcons SharedIcons]iconToString:并瞧你得到你的选择列表。

希望你喜欢这种方式。我知道我会的!(-:-)

于 2013-08-30T14:39:09.707 回答
1

或者,只需像 Apple 为全局键定义的常量......

.h文件中:

extern NSString *const kIconMenuSmallWht;
extern NSString *const kIconMenuBigWht;
extern NSString *const kIconShoppingSmall;
extern NSString *const kIconShoppingBig;
extern NSString *const kIconSleepingSmall;
extern NSString *const kIconSleepingBig;

.m文件中:

NSString *const kIconMenuSmallWht  = @"ag_icons_btn_menu_wht";
NSString *const kIconMenuBigWht    = @"c";
NSString *const kIconShoppingSmall = @"ag_icons_idx_ico_shopping_wht";
NSString *const kIconShoppingBig   = @"ag_icons_idx_ico_shopping_wht";
NSString *const kIconSleepingSmall = @"ag_icons_idx_ico_shopping_wht_120";
NSString *const kIconSleepingBig   = @"ag_icons_idx_ico_hotel_wht_120";

这些是常量……全局变量并不总是坏的!

(而且很多人觉得单例只是全局变量,而且同样邪恶)

这也将在Xcode中提供自动完成功能,并且只有一个地方可以进行更新/更改,但更简单,并且没有方法调用或对象来创建更好的性能(尽管可能是无限小的性能)。

于 2013-08-30T14:51:05.623 回答