iOS自定义视图的方法未调用

时间:2015-09-15 13:38:13

标签: ios objective-c

我有一个视图控制器CaptureDataVC和一个自定义视图KeyboardView

KeyboardView具有根据需要工作所需的所有init函数:
-(id)initWithCoder:(NSCoder *)aDecoder-(id)initWithFrame:(CGRect)frame

CaptureDataVC的xib文件中,我有UIView个自定义类KeyboardView

视图渲染得很好。问题是我无法调用KeyboardView中的任何方法(它编译并且我没有得到任何错误但是没有调用方法)。

基本上我不能这样做:

CaptureDataVC.h

@property (nonatomic,retain) IBOutlet KeyboardView  *keyboardView;

CaptureDataVC.m

[self.keyboardView foo];

KeyboardView.m

-(void) foo {
    NSLog(@"Hello World!"); //Won't print anyting
}

有什么想法吗?

修改

enter image description here

自定义类设置为蓝色视图

5 个答案:

答案 0 :(得分:7)

嗯,第一个问题是:

  1. [self.keyboardView foo];行是否在运行?在那里设一个断点。
  2. 如果是,self.keyboardView不是零吗?当调试器在上一个断点处停止时,在调试器中键入po self.keyboardView以进行检查。
  3. 一个典型的错误是假设始终设置self.someView。实际上,在观看和出口已经加载之前,它不会赢。请参阅viewDidLoadisViewLoaded

    的文档

答案 1 :(得分:5)

请检查KeyboardView的插座属性是否设置:如果属性为零,则不会发生任何事情

答案 2 :(得分:2)

无需在视图控制器中手动初始化自定义视图。您只需检查调用自定义视图方法的位置即可。应该在加载视图后调用它。即viewDidLoad或viewWillAppear方法。

答案 3 :(得分:1)

CaptureDataVC.m中,您必须将内存分配给对象:

self.keyboardView=[[KeyboardView alloc]init];

并将您的方法称为:

[self.keyboardView foo];

它会起作用。

答案 4 :(得分:1)

您可以使用delegates实现所需的结果。在viewcontroller中实现键盘视图的代表。