我有一个视图控制器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
}
有什么想法吗?
修改
自定义类设置为蓝色视图
答案 0 :(得分:7)
嗯,第一个问题是:
[self.keyboardView foo];
行是否在运行?在那里设一个断点。self.keyboardView
不是零吗?当调试器在上一个断点处停止时,在调试器中键入po self.keyboardView
以进行检查。一个典型的错误是假设始终设置self.someView
。实际上,在观看和出口已经加载之前,它不会赢。请参阅viewDidLoad
和isViewLoaded
。
答案 1 :(得分:5)
请检查KeyboardView的插座属性是否设置:如果属性为零,则不会发生任何事情
答案 2 :(得分:2)
无需在视图控制器中手动初始化自定义视图。您只需检查调用自定义视图方法的位置即可。应该在加载视图后调用它。即viewDidLoad或viewWillAppear方法。
答案 3 :(得分:1)
在CaptureDataVC.m
中,您必须将内存分配给对象:
self.keyboardView=[[KeyboardView alloc]init];
并将您的方法称为:
[self.keyboardView foo];
它会起作用。
答案 4 :(得分:1)
您可以使用delegates实现所需的结果。在viewcontroller中实现键盘视图的代表。