Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 创建一个包含常用方法的“Core”类_Ios_Objective C - Fatal编程技术网

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属性的声明吗?它可以工作,谢谢。这是否更快确实值得商榷。我正在努力适应目前的最佳实践,是否将其用于上述方法是另一回事,但解释非常有用,在未来将非常有用。谢谢。这是否更快确实值得商榷。我正在努力适应目前的最佳实践,是否将其用于上述方法是另一回事,但解释非常有用,将来也会非常有用