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。您真的需要其他类吗?为什么不使用协议呢?协议不是代码——没有什么可“共享”的。