0

此 iOS 应用程序中的某些标题是在情节提要中定义的。一些标题正在以编程方式设置。有没有一种简单的方法(可能是 Obj-C 类别?)使所有标题都小写而不进行子类化?

4

1 回答 1

2

使用method_exchangeImplementations(又名“Method Swizzling”)可以使用一些objective-c魔法

#import <objc/runtime.h>

@interface UINavigationItem (New)
@end

@implementation UINavigationItem (New)

- (void)setTitleLower:(NSString *)title {
    [self setTitleLower:[title lowercaseString]];
}

+ (void)load {
    method_exchangeImplementations(class_getInstanceMethod(self, @selector(setTitle:)), class_getInstanceMethod(self, @selector(setTitleLower:)));
}

@end

someNavItem.title = @"Whatever"现在对( )的每次调用都[UINavigationItem setTitle:(NSString*)title]应该通过 setTitleLower,而 setTitleLower 又会调用原始setTitle的,并稍作修改,将标题小写。

我会避免仅仅为了每个UINavigationItem. 我猜你正在试验类别。

于 2013-07-14T13:08:29.840 回答