Ios 创建一个包含常用方法的“Core”类
我在不同的屏幕上重复使用了很多方法。我尝试创建一个包含这些方法的核心类,然后根据需要在各种控制器中调用它们。一个是在导航栏被隐藏时返回,我不完全确定该怎么做。这就是我所尝试的:Ios 创建一个包含常用方法的“Core”类,ios,objective-c,Ios,Objective C,我在不同的屏幕上重复使用了很多方法。我尝试创建一个包含这些方法的核心类,然后根据需要在各种控制器中调用它们。一个是在导航栏被隐藏时返回,我不完全确定该怎么做。这就是我所尝试的: Core.h -(void) returnNavBar; 及 但是,self.navigationController以黄色突出显示。如果有什么不清楚的地方,请提问。在这种情况下使用self是错误的,因为在这种情况下self是核心对象的实例,该对象不是UIViewController,因此没有属性navigatio
Core.h
-(void) returnNavBar;
及
但是,
self.navigationController
以黄色突出显示。如果有什么不清楚的地方,请提问。在这种情况下使用self
是错误的,因为在这种情况下self
是核心
对象的实例,该对象不是UIViewController
,因此没有属性navigationController
在UIViewController
上的Objective-C类别中需要什么
UIViewController+Core.h
#import <Foundation/Foundation.h>
@interface UIViewController (Core)
-(void) returnNavBar;
@end
然后只需在yout viewcontroller.m文件中导入
UIViewController+Core.h
,就可以调用returnNavBar
方法。在这种情况下使用self
是错误的,因为在这种情况下,self
是核心
对象的实例,该对象不是UIViewController
,因此没有属性navigationController
在UIViewController
上的Objective-C类别中需要什么
UIViewController+Core.h
#import <Foundation/Foundation.h>
@interface UIViewController (Core)
-(void) returnNavBar;
@end
然后只需在yout viewcontroller.m文件中导入
UIViewController+Core.h
,就可以调用returnNavBar
方法。正如您在Core.c中声明的方法一样,这些方法将与Core类相关联,因此不会定义self.navigationController
——您的核心类没有此属性。即使定义了此属性,也不会将其初始化为调用类的navigationController
可以这样做的一种方法是使用类方法并传入所有必需的参数,因此
Core.h
+(void) returnNavBar:(UINavigationController *)navController;
Core.m
+ (void) returnNavBar:(UINavigationController *)navController
{
[navController setNavigationBarHidden:NO animated:NO];
}
请注意“+”而不是“-”,它将此标记为类方法
要调用它,您将调用
[core returnNavBar:self.NavigationController];
但这实际上是否比简单地将setNavigationBarHidden调用放在那里更快或更清晰,仍有争议。对于更复杂的操作可能更有意义。正如您在core.c中声明的方法,这些方法将与核心类相关联,因此不会定义
self.navigationController
——您的核心类没有此属性。即使定义了此属性,也不会将其初始化为调用类的navigationController
可以这样做的一种方法是使用类方法并传入所有必需的参数,因此
Core.h
+(void) returnNavBar:(UINavigationController *)navController;
Core.m
+ (void) returnNavBar:(UINavigationController *)navController
{
[navController setNavigationBarHidden:NO animated:NO];
}
请注意“+”而不是“-”,它将此标记为类方法
要调用它,您可以调用
[core returnNavBar:self.NavigationController];
但这实际上是否比简单地将setNavigationBarHidden调用放在那里更快或更清晰,仍有争议。对于更复杂的操作,它可能更有意义。您可以显示navigationController属性的声明吗?您可以显示navigationController属性的声明吗?它可以工作,谢谢。这是否更快确实值得商榷。我正在努力适应目前的最佳实践,是否将其用于上述方法是另一回事,但解释非常有用,在未来将非常有用。谢谢。这是否更快确实值得商榷。我正在努力适应目前的最佳实践,是否将其用于上述方法是另一回事,但解释非常有用,将来也会非常有用