至少我认为这是一个基本问题。我刚开始以编程方式处理视图。
在RouteCaptureViewController.h中:
@property (strong, nonatomic) IBOutlet UIView *routeCaptureSuperView;
@property(nonatomic, weak) IBOutlet UIImageView *captureImageView;
@property(nonatomic, retain) IBOutlet UIImageView *previewImageView;
@property (weak, nonatomic) IBOutlet UIView *captureRouteButtonView;
在我的故事板中:
我检查了所有插座是否正确连接。
我正在这样的方法中实现addSubview并且没有任何反应:
[self.routeCaptureSuperView addSubview:self.captureRouteButtonView];
[self.routeCaptureSuperView addSubview:self.captureImageView];
以前的代码在代码中有效:
[self.captureImageView removeFromSuperview];
[self.captureRouteButtonView removeFromSuperview];
我知道self.routeCaptureSuperView
不是来自NSLog的nil
。
答案 0 :(得分:1)
如果我理解正确并且您删除了视图以便稍后再添加它们,我可以做出有根据的猜测:
当您将removeFromSuperview
发送到您的观看时,它们会被取消分配,因为它们仅被声明为weak
。
弱意味着如果对象被释放,则属性将为nil'd,因为释放了与该对象的最后一个强关系。
父视图是保持与这两个视图的最后一个强关系的对象。
尝试在两个子视图的weak
声明中将strong
更改为@property
。