如何向视图控制器的视图发送消息?

Posted

技术标签:

【中文标题】如何向视图控制器的视图发送消息?【英文标题】:How do I send a message to the ViewController's View? 【发布时间】:2016-11-07 22:09:33 【问题描述】:

我在离开了很长一段时间后回到了 ios 开发,所以很抱歉不得不问这样一个基本的问题。

我正在创建一个单视图应用程序。我创建了一个类DrawingBoard,它是UIImageView 的子类。 Main.Storyboard 中设置的ViewController 与样板保持不变,只是我将视图控制器的视图从View 类更改为DrawingBoard。在界面生成器中,我右键单击“查看控制器”,我看到“绘图板”被列为插座。

到目前为止,一切都很好。我启动应用程序。 DrawingBoard 被实例化并响应触摸。

但现在我想从ViewControllerDrawingBoard 发送一条消息。我在标题的@interface 中设置了一个公共方法,该方法在.m 中实现。 ...我无法发送消息。视图控制器似乎不知道DrawingBoard。我错过了什么?

//
//  DrawingBoard.h
//  DrawingBoard

#import <UIKit/UIKit.h>

@interface DrawingBoard : UIImageView 
-(void)testMe;
@end

...

//
//  DrawingBoard.m
//  DrawingBoard
//
#import "DrawingBoard.h"

// ...

-(void)testMe 
    NSLog(@"/n/n/nTested!/n/n/n/");

我尝试从ViewControllerDrawingBoard 发送消息,如下所示:

[self.view testMe]

【问题讨论】:

你的问题和 Cocoa 有什么关系? 【参考方案1】:

你可以说

[(DrawingBoard*)self.view testMe];

但不要。将图像视图放入视图控制器的主视图;不要让它成为视图控制器的主视图。然后创建一个 IBOutlet,以便视图控制器可以获取对它的引用。

【讨论】:

顺便说一句,你似乎几乎不知道 Objective-C,所以既然你回来了,为什么不放弃它并学习 Swift 呢?这是一种更好的初学者语言。

以上是关于如何向视图控制器的视图发送消息?的主要内容,如果未能解决你的问题,请参考以下文章

从 MVC 中控制器中的不同方法向视图发送消息

Objective-C – 从应用程序委托向视图控制器发送消息

如何向对象发送消息?

在 Cocoa,UIResponder 中将消息从子视图发送到父视图?

CLLocationManger 向分配的实例发送消息

如何向作为 UIViewController 子类的 parentViewController 发送消息?