Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 未使用IB正确初始化子视图_Iphone_Objective C_Xcode_Uiview - Fatal编程技术网

Iphone 未使用IB正确初始化子视图

Iphone 未使用IB正确初始化子视图,iphone,objective-c,xcode,uiview,Iphone,Objective C,Xcode,Uiview,我在使用Interface Builder正确初始化子视图时遇到问题。我有以下视图层次结构UIWindow->BlankCanvasView->StallerView。BlankCanvasView是UIView的一个子类,StallerView是BlankCanvasView的一个IBOutlet @界面空白画布视图:UIView{ IBOutlet UIView *stalker; } @结束 我已经在BlankCanvasView的跟踪者出口和子视图之间建立了连接。然而,在我的touch

我在使用Interface Builder正确初始化子视图时遇到问题。我有以下视图层次结构UIWindow->BlankCanvasView->StallerView。BlankCanvasView是UIView的一个子类,StallerView是BlankCanvasView的一个IBOutlet

@界面空白画布视图:UIView{

IBOutlet UIView *stalker;
}

@结束

我已经在BlankCanvasView的跟踪者出口和子视图之间建立了连接。然而,在我的touchesBegin BlankCanvasView方法中,跟踪者出口为零。请参见下面的touchsbegin

- (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上使用示例时,我的演示应用程序似乎都没有正确加载任何子视图。

如果您在IB中创建“跟踪者”视图,它必须是视图层次结构的一部分,即作为另一个视图的子视图添加,或者必须由代码保留,以便在加载后不会释放。如果您对stapper变量使用retain属性,则这将自动为您处理:

@interface BlankCanvasView : UIView
{
    UIView *stalker;
}

@property (nonatomic, retain) IBOutlet UIView *stalker;

@end
确保你是跟踪者;在BlankCanvasView的实现中,并在解除分配视图时将属性设置为nil:

@implementation BlankCanvasView
@synthesize stalker;

- (void)dealloc
{
    self.stalker = nil;
    [super dealloc];
}

@end

嗨,Slayer,我实际上已经尝试了两种方法,一种是使用iVar,另一种是使用retain语义的属性。无论哪种情况,属性或iVar均为零。查看关于这个主题的其他类似帖子,我想知道是否需要重写UIView类的awakeFromNib方法?