我无法使用Interface Builder正确初始化我的SubView。我有以下View层次结构(UIWindow - > BlankCanvasView - > StalkerView)。 BlankCanvasView是UIView的子类,StalkerView是BlankCanvasView的IBOutlet
@interface BlankCanvasView:UIView {
IBOutlet UIView *stalker;
}
@end
我在BlankCanvasView的追踪者出口与子视图之间建立了连接。但是,在我的BlankCanvasView的touchesBegin方法中,追踪者出口是零。请参阅下面的touchesBegin。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"Touch Begin detected!!!");
NSLog(@"Stalker instance %@", stalker);
[UIView beginAnimations:@"StalkerAnimation" context:nil];
UITouch *touch = [touches anyObject];
//stalker is nil here!!!
[stalker setCenter:[touch previousLocationInView:self]];
[UIView commitAnimations];
}
我错过了什么?当我尝试按照iTunesU上的示例时,看起来我的演示应用程序都没有正确加载任何子视图。
答案 0 :(得分:0)
如果您在IB中创建“跟踪者”视图,它必须是视图层次结构的一部分(即,作为另一个视图的子视图添加),或者必须由您的代码保留,以便它不会装载后释放。如果对stalker变量使用retain属性,则会自动为您处理:
@interface BlankCanvasView : UIView
{
UIView *stalker;
}
@property (nonatomic, retain) IBOutlet UIView *stalker;
@end
确保你@synthesize缠扰者;在您的BlankCanvasView的实现中,并在取消分配视图时将属性设置为nil:
@implementation BlankCanvasView
@synthesize stalker;
- (void)dealloc
{
self.stalker = nil;
[super dealloc];
}
@end