Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.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 在多个ViewController之间共享相同代码的正确方法是什么?_Ios_Objective C_Uitableview_Inheritance - Fatal编程技术网

Ios 在多个ViewController之间共享相同代码的正确方法是什么?

Ios 在多个ViewController之间共享相同代码的正确方法是什么?,ios,objective-c,uitableview,inheritance,Ios,Objective C,Uitableview,Inheritance,我有几个视图控制器(或者更具体地说,是tableview控制器),所有这些视图控制器都使用相同的视图(加载视图),可以在数据访问运行时显示 目前,我在所有这些视图控制器中都有相同的代码: // Loading the loading view NSArray *nibContents = [[NSBundle mainBundle] loadNibNamed:@"loadingView" owner:nil options:nil]; loadingView = [nibContents las

我有几个视图控制器(或者更具体地说,是tableview控制器),所有这些视图控制器都使用相同的视图(加载视图),可以在数据访问运行时显示

目前,我在所有这些视图控制器中都有相同的代码:

// Loading the loading view
NSArray *nibContents = [[NSBundle mainBundle] loadNibNamed:@"loadingView" owner:nil options:nil];
loadingView = [nibContents lastObject];

[self.view addSubview:loadingView];
我还使用toast视图来显示控制器内操作后的成功或错误

我的问题是,避免代码复制/粘贴的正确方法是什么

我尝试了以下类别: 似乎不起作用,因为我无法存储对加载视图的引用

我也尝试过继承,但没有多大成功(子控制器无法识别父视图控制器的属性(加载视图))

你能告诉我怎么做吗? 我使用故事板和NIB文件来显示特定的视图(加载和祝酒)

提前谢谢

我尝试过categories:似乎不起作用,因为我无法存储对加载视图的引用

视图控制器类别或正在显示的视图上的类方法是处理此问题的最佳方法

可以使用关联对象保留对正在显示的视图的引用。如果您担心这些问题,可以使用
静态
变量来提供持久存储,而不需要属性或实例变量。这两种情况都假设您一次只显示一个加载视图或警报视图,这是预期的

对于类别,您可以定义如下方法

-(void)设置加载:(BOOL)加载


在视图控制器上。这将有一个引用加载视图的静态变量。如果传递的是YES,则创建视图,显示它并将其分配给static(如果它还不存在)。如果传递NO,则删除视图并将static设置回nil

在该类上使用NSObject创建另一个类。例如,Car类包含轮胎、方向盘、机器、座椅、车窗等对象。当你调用像Car*carObject=[Car alloc]init]这样的类时;carObject.Tire获取轮胎引用。@HotLicks你肯定知道答案,我想我不知道。@Bejibun这意味着我仍然需要调用这些方法。不能自动完成吗?调用这些方法是什么意思?您不是在调用该方法,而是调用该类来获取该类的对象。如果要共享方法而不是类,请尝试使用全局函数+(void)myMethod而不是-(void)myMethod我仍然需要做一些事情,比如:[myNewClass initLoadingView]来完成我文章中显示的代码,例如在“scrollViewDidScroll”函数中调用[myNewClass showView],这段代码将在同时使用相同视图的4个控制器中重复。非常感谢,我见过一些关于这种方法的东西。我会花更多时间在上面:-)