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