0

至少我认为这是一个基本问题。我刚开始以编程方式处理视图。

在 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不是nil来自 NSLog。

4

1 回答 1

1

如果我理解正确并且您删除了视图以稍后再次添加它们,我可以做出有根据的猜测:

在您发送removeFromSuperview到您的视图的那一刻,它们被释放,因为它们被声明为weakonly。
弱意味着如果对象被释放,则该属性将为零,因为与该对象的最后一个强关系已被释放。

父视图是与这两个视图保持最后牢固关系的对象。

尝试在两个子视图的声明中更改weak为。strong@property

于 2013-01-18T21:45:59.470 回答