Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.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
Objective c 目标C:分班_Objective C_Class - Fatal编程技术网

Objective c 目标C:分班

Objective c 目标C:分班,objective-c,class,Objective C,Class,让我们假设我有以下三个文件: MainViewController.h MainViewController.m MainViewController.xib MainViewController.xib将在屏幕上显示许多不同的信息,例如按钮、标签和图像 让我们假设我也有这三个文件: DisplayController.h DisplayController.m DisplayController.xib 是否可以在MainViewController.m中调用DisplayContro

让我们假设我有以下三个文件:

  • MainViewController.h
  • MainViewController.m
  • MainViewController.xib
MainViewController.xib
将在屏幕上显示许多不同的信息,例如按钮、标签和图像

让我们假设我也有这三个文件:

  • DisplayController.h
  • DisplayController.m
  • DisplayController.xib
是否可以在
MainViewController.m
中调用
DisplayController.m
中的方法,该方法能够更改
MainViewController.xib
上显示的内容

因此,如果我需要一个单独的类来将图像绘制到
MainViewController.xib
,以及一个单独的类来将按钮绘制到
MainViewController.xib
,我该怎么做呢?我可以想象,需要在
MainViewController
DisplayController
之间建立某种链接,以便
DisplayController
能够操作
MainViewController
中的属性


任何帮助都将不胜感激

首先,您可以随时从任何地方调用静态(即,“+”vs“-”)方法。这有时是实现不需要访问实例变量的常用方法的最简单/最佳方法

接下来,如果您有
alloc
ed和
init
ed一个
DisplayController
的实例,并且您有一个指向该实例的指针,那么您可以调用该实例的方法,即使它控制的视图没有显示

例如,您可以向
DisplayController
的实例方法传递一个指向您希望以某种方式修改的
UIButton
的指针(比如更新其文本),即使该
UIButton
不属于
DisplayController
。基本上,代码就是代码,比特并不真正关心谁来设置它们

您甚至可以将指向该
ui按钮的指针
分配给
DisplayController
中的属性,这样您就可以稍后返回并操作它,而无需再次传入指针

您只需要小心,不要忘记您正在处理一个“外来”对象,并且您当前的实例变量(除了它自己的属性)与它没有关系。明智的做法是有一些引人注目的评论来解释这一点


据我所知,您可能无法(以某种方式)将DisplayController直接链接到MainViewController.xib(而该xib由MainViewController同时链接和/或DisplayController实例同时链接到DisplayController.xib)。是的,也许有一些很好的方法可以做到这一点,但它们很脆弱、复杂而且容易出错。

.xib文件只是一个归档文件,所以,是的,任何类都可以打开并读取该归档文件。听起来你想看看

- (NSArray *)loadNibNamed:(NSString *)name owner:(id)owner options:(NSDictionary *)options
属于NSBundle类。这将返回一个由顶级视图填充的数组,您可以通过任何视图的子视图沿视图层次向下导航,以查找图像、标签或.xib文件中包含的任何内容


是的,DisplayViewController中的方法可以加载.xib文件并对其进行处理,或者将其传递给MainViewController。

您真的需要其他类吗?为什么不使用协议呢?协议不是代码——没有什么可“共享”的。