在编写 Objective-C 类别时,我如何知道要重写哪些方法?
How Do I Know Which Methods to Override When Writing an Objective-C Category?
我想在 UINavigationItem
上写一个类别,以便在我的整个应用程序中对 barBackButtonItem
进行更改。
根据此处的评论 (),我应该 "override backBarButtonItem in it, then your method will be called whenever their back bar button item is called for." - 但我怎么知道要覆盖什么方法?我查看了 UINavigationItem 文档,有多种方法用于初始化 backBarButtonItem
。如何确定我应该在我的类别中覆盖哪种方法?
您想要 UIViewController
的 subclass 而不是 catagory.
例如:
@interface CustomViewController : UIViewController
@end
@implementation CustomViewController
-(void) viewDidLoad {
[super viewDidLoad];
self.navigationItem.backBarButtonItem.title = @"";
}
@end
现在您只需为您的视图控制器使用 CustomViewController
class,它们都会应用更改。
如果您以编程方式执行此操作,那么您只需要更改视图控制器的超级class:
从这个....到这个...
如果您使用的是故事板,您需要从身份检查器中更改超级class...
如果您想覆盖 backBarButtonItem
,请覆盖 backBarButtonItem
。只有一种方法叫做 backBarButtonItem
。 ObjC 方法由它们的名称唯一确定。
你会这样做:
@implementation UINavigationItem (MyCategory)
- (UIBarButtonItem *)backBarButtonItem
{
return [[UIBarButtonItem alloc] initWithTitle:nil style:UIBarButtonItemStylePlain target:nil action:nil]
}
@end
我并不是说这是个好主意,但你就是这样做的。
我想在 UINavigationItem
上写一个类别,以便在我的整个应用程序中对 barBackButtonItem
进行更改。
根据此处的评论 (backBarButtonItem
。如何确定我应该在我的类别中覆盖哪种方法?
您想要 UIViewController
的 subclass 而不是 catagory.
例如:
@interface CustomViewController : UIViewController
@end
@implementation CustomViewController
-(void) viewDidLoad {
[super viewDidLoad];
self.navigationItem.backBarButtonItem.title = @"";
}
@end
现在您只需为您的视图控制器使用 CustomViewController
class,它们都会应用更改。
如果您以编程方式执行此操作,那么您只需要更改视图控制器的超级class:
从这个....到这个...
如果您使用的是故事板,您需要从身份检查器中更改超级class...
如果您想覆盖 backBarButtonItem
,请覆盖 backBarButtonItem
。只有一种方法叫做 backBarButtonItem
。 ObjC 方法由它们的名称唯一确定。
你会这样做:
@implementation UINavigationItem (MyCategory)
- (UIBarButtonItem *)backBarButtonItem
{
return [[UIBarButtonItem alloc] initWithTitle:nil style:UIBarButtonItemStylePlain target:nil action:nil]
}
@end
我并不是说这是个好主意,但你就是这样做的。